मुख्य सामग्री पर जाएँ

Python स्क्रिप्ट को Exe फ़ाइल में बदलने के तीन तरीके

जानें कि executable फ़ाइल क्या होती है और PyInstaller, Nuitka, और auto-py-to-exe का उपयोग करके Python स्क्रिप्ट को .exe फ़ाइल में कैसे बदला जाता है।
· 7 मि॰ पढ़ें

AI के साथ खोजें

इस लेख में, मैं आपको वे स्थितियाँ दिखाऊँगा जहाँ Python फ़ाइल को executable में बदलना उचित है। साथ ही, मैं तीन Python लाइब्रेरीज़—Pyinstaller, Nuitka, और auto-py-to-exe—का उपयोग करके Python फ़ाइल को executable फ़ाइल में बदलना भी प्रदर्शित करूँगा।

इस ट्यूटोरियल के साथ चलने के लिए इस Github रिपॉज़िटरी को क्लोन करें।

Python को .exe में क्यों बदलें?

Executable फ़ाइलें—जिन्हें .exe एक्सटेंशन के साथ सेव किया जाता है—Windows ऑपरेटिंग सिस्टम वाले कंप्यूटरों पर सॉफ़्टवेयर एप्लिकेशन इंस्टॉल करने या चलाने के लिए उपयोग की जाती हैं। वह फ़ाइल जो Windows कंप्यूटर को किसी एप्लिकेशन को चलाने देती है, .exe फ़ाइल ही है।

कई कारण हैं जिनकी वजह से आप Python प्रोग्राम को executable फ़ाइल में बदलना चाह सकते हैं। आइए कुछ पर नज़र डालते हैं:

दुर्भावनापूर्ण गतिविधि

दुर्भाग्य से, इंटरनेट पर कुछ लोग हानिकारक सॉफ़्टवेयर फैलाकर दूसरों के डिवाइस संक्रमित करते हैं और उनकी जानकारी चुरा लेते हैं। इनसे बचाव का एक तरीका है उनकी चाल में न फँसना—यानी बिना सोचे-समझे ऐसे .exe फ़ाइलें डाउनलोड या ओपन न करें जो किसी विश्वसनीय स्रोत से न हों।

सुगम पहुँच

Python फ़ाइल को executable में बदलने का एक और कारण है किसी एप्लिकेशन को अन्य उपयोगकर्ताओं के साथ साझा करना। सामान्य Python प्रोग्राम में कई dependencies हो सकती हैं जिन्हें किसी दूसरे उपयोगकर्ता को प्रोग्राम चलाने से पहले इंस्टॉल करना होगा। अगर उपयोगकर्ता कोड करना नहीं जानता तो? ऐसे में किसी उपयोगकर्ता से कोई एप्लिकेशन इस्तेमाल करने से पहले कोडिंग सीखने की अपेक्षा करना अनुचित हो सकता है। Python फ़ाइल को executable में बदलने से उपयोगकर्ता बिना Python जाने भी आपका प्रोग्राम चला सकते हैं।

स्रोत कोड की सुरक्षा

भले ही उपयोगकर्ता कोड करना जानते हों, फिर भी Python फ़ाइल को executable में बदलना आपके कोड की चोरी रोकने का अच्छा विकल्प हो सकता है। Executable फ़ाइल स्रोत कोड का एक compiled संस्करण बनाती है, जो असल स्रोत कोड की तुलना में समझना कठिन होता है, इसलिए कोड चोरी का जोखिम घटता है।

जॉब शेड्यूलिंग

आप अपने कंप्यूटर पर किसी विशेष समय पर .exe फ़ाइल चलाने के लिए जॉब भी शेड्यूल करना चाह सकते हैं।

Python स्क्रिप्ट को .exe फ़ाइल में कैसे बदलें 

अब जब आप जानते हैं कि .exe फ़ाइलें क्या होती हैं और आप क्यों Python फ़ाइल को .exe फ़ाइल में बदलना चाह सकते हैं, तो आइए देखें कि Python में यह कैसे किया जाए। इस खंड में, हम तीन फ़्रेमवर्क कवर करेंगे: pyinstaller, nuitka और auto-py-to-exe।

एक बात ध्यान में रखें कि auto-py-to-exe में Python 3.11 और उसके बाद के संस्करणों के साथ ज्ञात अनुकूलता समस्याएँ हैं, और आमतौर पर यह केवल Python 3.10 तक ही भरोसेमंद रूप से काम करता है, जब तक कि आप विशिष्ट नए संस्करणों और सावधानीपूर्वक मिलाई गई dependencies का उपयोग न करें।

यह कहते हुए, आइए शुरू करें।

स्क्रिप्ट तैयार करना

इस डेमोंस्ट्रेशन में हम New York City Airbnb open data डेटासेट का उपयोग करेंगे। 

डेटा वैज्ञानिक किसी डेटासेट का विश्लेषण करने से पहले, डेटा को उन टूल्स के अनुरूप फ़ॉर्मैट करना होता है जिनका वे उपयोग कर रहे हैं। इसलिए, एक validation schema बनाना, प्रत्येक फ़ील्ड पर लागू सभी validations को घोषणात्मक रूप से परिभाषित कर देता है। यह प्रक्रिया काफ़ी दोहरावपूर्ण हो सकती है। अपने डेटा वैज्ञानिकों को दोहराव वाले कार्यों से बचाने के लिए, हमने एक स्वचालित validation स्क्रिप्ट बनाई है जो समय-समय पर चलती है। 

नोट: यदि आपकी स्क्रिप्ट को डेटा पढ़ना है, तो relative paths का उपयोग करते समय अत्यधिक सावधानी बरतें। बेहतर होगा कि आप absolute paths का उपयोग करें ताकि आपका executable अपेक्षा के अनुरूप काम करे। 

import pandas as pd
from pandas.api.types import CategoricalDtype

def perform_validation(filename:str):
    """
    A function to validate inputs for NYC Airbnb Open data.
    """
    path_to_data = "../.."
    data = pd.read_csv(f"{path_to_data}{filename}")



    # Convert neighbourhood_group to type category
    neighbourhood_group_to_cat = CategoricalDtype(
        categories=["Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island"],
        ordered=False
        )
 
    data["neighbourhood_group"] = data["neighbourhood_group"].astype(neighbourhood_group_to_cat)

    # Convert room_type to type category
    room_type_to_cat = CategoricalDtype(
        categories=["Entire home/apt", "Private room", "Shared room"],
        ordered=False
    )

    data["room_type"] = data["room_type"].astype(room_type_to_cat)

    # Convert last_review to datetime
    data["last_review"] = pd.to_datetime(data["last_review"])

    # Minimum nights a person can stay is one night
    assert data["minimum_nights"].min() >= 1

    # Minimum number of reviews is 0
    assert data["number_of_reviews"].min() >= 0
 
    # Minimum number of reviews per month
    assert data["reviews_per_month"].min() >= 0.00

    # Minimum amount of listings per host
    assert data["calculated_host_listings_count"].min() >= 1

    # Number of days when listing is available for books
    # Could be 0 if tennant has long term booking
    assert data["availability_365"].min() >= 0

    # Save validated data
    data.to_csv("validated_ab_nyc_2019.csv", index=False)

if __name__ == "__main__":
    # User inputs filename
    filename = input("Enter filename: ")
 
    # Ensure it's a string
    if not filename.isalpha():
        filename = str(filename)
 
    # Automated validation
    perform_validation(filename)

नोट: हमने यह स्क्रिप्ट pyinstaller, nuitka और auto-py-to-exe डायरेक्टरीज़ में कॉपी-पेस्ट की है। 

# Directory structure
|   AB_NYC_2019.csv
|  
+---auto_py_to_exe
|   |   requirements.txt
|   |   validation.py         
+---pyinstaller
    |   requirements.txt
    |   validation.py

हर डायरेक्टरी का अपना वर्चुअल एनवायरनमेंट है जिसमें हमने requirements इंस्टॉल किए हैं: देखें pyinstaller requirements या auto-py-to-exe requirements। यदि आप कोड के साथ चल रहे हैं, तो pyinstaller डायरेक्टरी और auto-py-to-exe डायरेक्टरी में वर्चुअल एनवायरनमेंट बनाना न भूलें। 

ऊपर दी गई स्क्रिप्ट उच्च स्तर पर एक फ़ंक्शन शामिल करती है—Python में फ़ंक्शन लिखने के बारे में और जानें—जो एक डेटासेट पढ़ती है और फिर डेटा के विशिष्ट फ़ील्ड्स के अपेक्षित फ़ॉर्मैट को परिभाषित करती है। अगला चरण इस Python स्क्रिप्ट को एक executable फ़ाइल में बदलना है जिसे समय-समय पर चलाकर फ़ॉर्मैटेड डेटासेट जनरेट किया जा सके। 

विधि 1: Pyinstaller

Pyinstaller आपको टर्मिनल से तेज़ी से Python फ़ाइल को executable फ़ाइल में बदलने देता है। एक बार जब आप अपना वर्चुअल एनवायरनमेंट बना लें और अपनी स्क्रिप्ट के लिए आवश्यकताएँ (pyinstaller सहित) इंस्टॉल कर लें, तो टर्मिनल खोलें और उस डायरेक्टरी में जाएँ जहाँ वह Python फ़ाइल है जिसे आप कन्वर्ट करना चाहते हैं। 

अगला चरण है निम्न कमांड चलाना: 

pyinstaller --onefile validation.py

शुरू में कई लॉग दिखाई देंगे, जिनमें अंतिम कुछ इस तरह होंगे: “completed successfully”—यदि executable फ़ाइल सफलतापूर्वक बन गई है। 

executable file being created

फ़िगर 1: लॉग्स जो executable फ़ाइल के बनने और सफल समापन को दिखाते हैं।

इस रन के पूरा होने पर, उसी डायरेक्टरी में दो नई डायरेक्टरी—build और dist—बनेंगी जहाँ Python फ़ाइल है। dist डायरेक्टरी में आपको validation.exe स्क्रिप्ट मिलेगी।

validation.exe on a dataset

फ़िगर 2: एक GIF जो डेटासेट पर validation.exe के निष्पादन को दर्शाता है।

स्क्रिप्ट चलाने के लिए, बस उस पर क्लिक करें। इससे एक कंसोल खुलेगा जो आपसे उस डेटा फ़ाइल का नाम दर्ज करने को कहेगा जिस पर आप validation चलाना चाहते हैं। जैसे ही आप फ़ाइल का नाम दर्ज करेंगे, कंसोल बंद हो जाएगा और validated डेटा उसी डायरेक्टरी में बन जाएगा जहाँ validation.exe फ़ाइल है—देखें फ़िगर 2। 

विधि 2: Nuitka

Nuitka एक और तरीका है जिस पर विचार किया जा सकता है। PyInstaller, जो आपकी Python स्क्रिप्ट को Python interpreter के साथ पैक करता है, के विपरीत Nuitka आपकी Python कोड को वास्तव में C कोड में कंपाइल करता है। इसका परिणाम बेहतर स्रोत कोड सुरक्षा, संभवतः तेज़ निष्पादन, और अक्सर छोटे फ़ाइल आकारों के रूप में होता है। समझौता यह है कि कंपाइलेशन समय अधिक होता है और सेटअप अधिक जटिल।

इंस्टॉलेशन और सेटअप

वर्चुअल एनवायरनमेंट बनाने और pip install nuitka से Nuitka इंस्टॉल करने के बाद, आपको यह सुनिश्चित करना होगा कि आपके सिस्टम पर कोई C compiler उपलब्ध है। किस compiler की आवश्यकता है, यह आपके ऑपरेटिंग सिस्टम पर निर्भर करता है:

  • Windows: Visual Studio वेबसाइट से Microsoft Visual C++ Build Tools (नि:शुल्क) डाउनलोड और इंस्टॉल करें, या MinGW का उपयोग करें

  • macOS: xcode-select --install के साथ Xcode Command Line Tools इंस्टॉल करें

  • Linux: GCC आमतौर पर पहले से इंस्टॉल होता है; यदि नहीं, तो अपने पैकेज मैनेजर से इंस्टॉल करें

इंस्टॉल होने के बाद, Nuitka आपका compiler स्वतः पहचान लेगा। यदि समस्याएँ आएँ, तो सुनिश्चित करें कि compiler आपके सिस्टम के PATH में है।

Nuitka के साथ वैलिडेशन स्क्रिप्ट को कन्वर्ट करना

आइए उसी NYC Airbnb validation स्क्रिप्ट को Nuitka का उपयोग करके कन्वर्ट करें, जैसा हमने PyInstaller और auto-py-to-exe के साथ किया था। अपनी स्क्रिप्ट को executable में कंपाइल करने के लिए यह चलाएँ:

python -m nuitka --onefile --follow-imports --include-package=pandas validation.py

प्रत्येक फ़्लैग का विवरण:

  • --onefile: एकल executable फ़ाइल बनाता है (कई फ़ाइलों और dependencies वाली डायरेक्टरी के बजाय)

  • --follow-imports: आपकी स्क्रिप्ट द्वारा इम्पोर्ट किए गए सभी मॉड्यूल स्वतः शामिल करता है

  • --include-package=pandas: pandas पैकेज को स्पष्ट रूप से शामिल करता है (कुछ पैकेज स्वतः नहीं पकड़े जाते, यह सुनिश्चित करता है कि यह बंडल हो)

PyInstaller, जो लगभग 30 सेकंड में पूरा हो जाता है, के विपरीत Nuitka को काफ़ी अधिक समय लगेगा—आम तौर पर 5–15 मिनट, जो आपके कोड की जटिलता और सिस्टम की गति पर निर्भर करता है। आपको टर्मिनल में C कंपाइलेशन चरण के दौरान प्रगति दिखाने वाला आउटपुट नज़र आएगा।

पूरा होने पर, आपको एक सफलता संदेश दिखाई देगा जो संकेत देगा कि executable बन गया है। कंपाइल किया गया executable उसी डायरेक्टरी में बनता है जहाँ validation.py फ़ाइल है।

validation.exe पर डबल-क्लिक करें या कमांड लाइन से चलाएँ। एक कंसोल विंडो खुलेगी जो आपसे फ़ाइलनाम दर्ज करने के लिए कहेगी, बिल्कुल PyInstaller की तरह। AB_NYC_2019.csv टाइप करने और एंटर दबाने के बाद validation चलेगा, कंसोल बंद होगा, और नई फ़ाइल validated_ab_nyc_2019.csv उसी डायरेक्टरी में बन जाएगी, ठीक PyInstaller वाले संस्करण की तरह।

विधि 3: auto-py-to-exe

auto-py-to-exe का उपयोग करके executable फ़ाइल बनाने का पहला कदम है इसे निम्न कमांड से चलाना: 

auto-py-to-exe 

यह एक ग्राफ़िकल यूज़र इंटरफ़ेस (GUI) वापस करेगा जो हमारी Python फ़ाइल को executable फ़ाइल में बदलने में सहायता करेगा। 

graphical user interface

फ़िगर 3: auto-py-to-exe कमांड चलाने के बाद प्राप्त ग्राफ़िकल यूज़र इंटरफ़ेस। 

नोट: यदि यह काम नहीं कर रहा है, तो सुनिश्चित करें कि आपने auto-py-to-exe डायरेक्टरी में वर्चुअल एनवायरनमेंट बनाया है और अपनी वर्चुअल एनवायरनमेंट में निम्न कमांड से requirements.txt इंस्टॉल किए हैं: pip install -r requirements.txt।

GUI में कई फ़ील्ड्स हैं जिन्हें हमें भरना होगा। आइए प्रत्येक को देखें और समझें: 

  • Specific Location: इस फ़ील्ड में आपको उस Python फ़ाइल का स्क्रिप्ट लोकेशन जोड़ना होगा जिसे आप executable में बदलना चाहते हैं।  
  • Onefile: यहाँ आप चुनते हैं कि आप एक सिंगल डायरेक्टरी बनाना चाहते हैं या फ़ाइल। सिंगल डायरेक्टरी में आपकी स्क्रिप्ट चलाने के लिए आवश्यक सभी dependencies और एक executable फ़ाइल होगी, जबकि “One File” चुनने पर एक ही executable फ़ाइल बनेगी। 
  • Console Window: “Console Based” या “Window Based” कंसोल विंडो के बीच निर्णय इस पर निर्भर करता है कि आपकी स्क्रिप्ट क्या रिटर्न करती है। उदाहरण के लिए, ऊपर बनाई गई स्क्रिप्ट उपयोगकर्ता से फ़ाइलनाम इनपुट करने को कहती है। इसलिए “Console Based” समाधान अनुशंसित है क्योंकि executable चलाने के बाद यह कंसोल खोलेगा। यदि executable चलाने के बाद कंसोल आउटपुट दिखाने की आवश्यकता नहीं है तो “Window Based” अच्छा विकल्प है। 

हमें अन्य विकल्प भी दिए जाते हैं जिनसे हम अपने executable फ़ाइल के निर्माण को कॉन्फ़िगर कर सकते हैं (जैसे आइकन जोड़ना, अतिरिक्त फ़ाइलें, आदि)। इसी सेक्शन में हम उस पथ को भी संशोधित कर सकते हैं जहाँ हम executable द्वारा जनरेट की गई फ़ाइलों को एक्सपोर्ट करना चाहते हैं: ऐसा करने के लिए “Settings” टॉगल विकल्प चुनें और अपनी पसंद की आउटपुट डायरेक्टरी ब्राउज़ करें। अंतिम चरण है “Convert .py to .exe” चुनना, ताकि हमारी Python फ़ाइल कन्वर्ट हो जाए। 

फ़िगर 4 में GIF देखें कि हमने अपने executable फ़ाइल को कैसे कॉन्फ़िगर किया। 

Auto py to exe

फ़िगर 4: auto-py-to-exe के लिए कॉन्फ़िगरेशन दर्शाता GIF

जब हम auto-py-to-exe डायरेक्टरी पर वापस जाते हैं, तो output नाम की एक डायरेक्टरी होगी: यहीं हमारी validation.exe फ़ाइल होगी। फ़ाइल चुनें और चलाएँ, इससे एक कंसोल खुलेगा जो आपसे फ़ाइलनाम दर्ज करने को कहेगा:

executable validation file

फ़िगर 5: executable validation फ़ाइल चलाने पर प्राप्त कंसोल। 

बस फ़ाइल का नाम दर्ज करें—इस उदाहरण में, AB_NYC_2019.csv—और एंटर दबाएँ। इससे कंसोल बंद हो जाएगा और आउटपुट डायरेक्टरी (जहाँ executable फ़ाइल है) में validated_ab_nyc_2019.csv नाम की नई फ़ाइल बन जाएगी।

PyInstaller बनाम Nuitka

यह रहा कि उसी validation स्क्रिप्ट पर Nuitka और PyInstaller कैसे तुलना करते हैं, और GUI विकल्प के रूप में auto-py-to-exe भी:

मेट्रिक

PyInstaller

auto-py-to-exe

Nuitka

Executable आकार

औसत

औसत

20-30% छोटा

बिल्ड समय

औसत

औसत

16x अधिक

स्टार्टअप समय

~2 सेकंड

~2 सेकंड

~1 सेकंड

रनटाइम (validation कार्य)

~3 सेकंड

~3 सेकंड

~2.5 सेकंड

स्रोत कोड सुरक्षा

मध्यम

मध्यम

उत्कृष्ट

Python 3.8–3.10

✅ उत्कृष्ट

✅ उत्कृष्ट

✅ उत्कृष्ट

Python 3.11+

✅ उत्कृष्ट

⚠️ ज्ञात समस्याएँ

✅ उत्कृष्ट

PyInstaller और Nuitka दोनों सभी आधुनिक Python संस्करणों में मज़बूत समर्थन देते हैं, जबकि auto-py-to-exe में Python 3.11 और आगे के लिए ज्ञात अनुकूलता समस्याएँ हैं। Nuitka छोटे, तेज़ executables बनाता है और IP सुरक्षा बेहतर देता है—लेकिन बिल्ड प्रक्रिया PyInstaller की तुलना में लगभग 16 गुना धीमी है।

निष्कर्ष

इस लेख में, आपने सीखा: 

  • Python फ़ाइल क्या होती है
  • Executable फ़ाइल क्या होती है और यह क्यों उपयोगी हो सकती है 
  • pyinstaller का उपयोग करके Python स्क्रिप्ट को executable में कैसे बदला जाए—यह कमांड लाइन ऑपरेशंस में सहज लोगों के लिए बढ़िया टूल है। 
  • auto-py-to-exe का उपयोग करके Python स्क्रिप्ट को executable में कैसे बदला जाए—यह उपयोगकर्ताओं को एक ग्राफ़िकल यूज़र इंटरफ़ेस (GUI) देता है जिससे executable फ़ाइल के निर्माण को कॉन्फ़िगर किया जा सकता है। 

यह जानने के लिए कि आप डेटा साइंस के लिए Python का उपयोग कैसे कर सकते हैं, DataCamp के Associate Data Scientist with Python करियर ट्रैक को देखें।

FAQs

क्या मैं executable में अतिरिक्त फ़ाइलें (जैसे, इमेज, कॉन्फ़िगरेशन फ़ाइलें) शामिल कर सकता/सकती हूँ?

हाँ, तीनों टूल आपकी स्क्रिप्ट के लिए आवश्यक अतिरिक्त फ़ाइलों को बंडल करने देते हैं। PyInstaller और Nuitka में आप --add-data विकल्प से शामिल की जाने वाली फ़ाइलें निर्दिष्ट कर सकते हैं। auto-py-to-exe में GUI में "Additional Files" के अंतर्गत फ़ाइलें जोड़ने का विकल्प है। सुनिश्चित करें कि आप relative या absolute paths ठीक से दें ताकि executable उन फ़ाइलों तक पहुँच सके।

मैं executable फ़ाइल में कस्टम आइकन कैसे जोड़ सकता/सकती हूँ?

आप .ico फ़ाइल निर्दिष्ट करके अपने executable में कस्टम आइकन जोड़ सकते हैं। PyInstaller में --icon फ़्लैग का उपयोग करें और अपनी .ico फ़ाइल का पथ दें। auto-py-to-exe में आप GUI के "Icon" फ़ील्ड में आइकन पथ सेट कर सकते हैं। Nuitka भी --windows-icon-from-ico फ़्लैग सपोर्ट करता है। ध्यान दें कि आइकन फ़ाइल .ico फ़ॉर्मैट में होनी चाहिए।

मेरी executable फ़ाइल इतनी बड़ी क्यों है, और मैं इसका आकार कैसे घटा सकता/सकती हूँ?

Executable फ़ाइलें सभी dependencies, लाइब्रेरीज़, और Python interpreter शामिल कर सकती हैं, जिससे वे बड़ी हो सकती हैं। आकार घटाने के लिए:

  • PyInstaller या Nuitka में --onefile विकल्प का उपयोग करें ताकि सब कुछ एक फ़ाइल में बंडल हो जाए।
  • अनावश्यक लाइब्रेरीज़ को --exclude-module विकल्प से बाहर करें (PyInstaller या Nuitka)।
  • UPX जैसे टूल्स से परिणामस्वरूप executable को कंप्रेस करने पर विचार करें (PyInstaller और auto-py-to-exe के साथ काम करता है)।
  • Nuitka का उपयोग करने पर विचार करें, जो आमतौर पर PyInstaller की तुलना में 20–30% छोटे executables बनाता है।
क्या मैं किसी अलग ऑपरेटिंग सिस्टम के लिए executable बना सकता/सकती हूँ?

PyInstaller, auto-py-to-exe, और Nuitka सभी प्लेटफ़ॉर्म-विशिष्ट हैं। किसी अलग ऑपरेटिंग सिस्टम के लिए executable बनाने के लिए, आपको cross-compilation टूल्स का उपयोग करना होगा या लक्षित OS के लिए एक वर्चुअल मशीन या कंटेनर सेट करना होगा। उदाहरण के लिए, Linux पर Windows executable बनाने के लिए आप Wine या Windows वातावरण वाले Docker का उपयोग कर सकते हैं।

pyinstaller और auto-py-to-exe के विकल्प क्या हैं?

executables बनाने के अन्य टूल्स में शामिल हैं:

  • cx_Freeze: executables बनाने के लिए क्रॉस-प्लेटफ़ॉर्म टूल।
  • py2exe: Windows-विशिष्ट टूल जो Python स्क्रिप्ट्स से executables बनाता है।
Kurtis Pykes

लेखक

Kurtis Pykes

विषय