जवाबों:
आप compileallटर्मिनल में उपयोग कर सकते हैं । निम्न आदेश पुनरावर्ती उप निर्देशिकाओं में जाएगा और सभी पायथन फ़ाइलों के लिए pyc फ़ाइलें बनाता है जो इसे पाता है। Compileall ताकि आप इसे उपयोग करने के लिए कुछ भी अतिरिक्त स्थापित करने की आवश्यकता नहीं है मॉड्यूल, अजगर मानक पुस्तकालय का हिस्सा है। यह python2 और python3 के लिए ठीक उसी तरह काम करता है।
python -m compileall .
-O, बाईटकोड के लिए (.pyo फ़ाइल आईएसओ .pyc) संकलन झंडा।
compileallअपनी साइट-संकुल फ़ोल्डर पर किया था और इसने सब कुछ गड़बड़ कर दिया
जब से मैंने आखिरी बार अजगर का उपयोग किया है, तब से यह हो गया है, लेकिन मेरा मानना है कि आप इसका उपयोग कर सकते हैं py_compile:
import py_compile
py_compile.compile("file.py")
__pycache__/file.cpython-32.pycऔर आपको वह रिटर्न मान के रूप में मिलता है।
मुझे पायथन लिपियों को बायटेकोड में संकलित करने के कई तरीके मिले
py_compileटर्मिनल में उपयोग करना :
python -m py_compile File1.py File2.py File3.py ...
-m संकलित किए जाने वाले मॉड्यूल (नामों) को निर्दिष्ट करता है।
या, फ़ाइलों के संवादात्मक संकलन के लिए
python -m py_compile -
File1.py
File2.py
File3.py
.
.
.का उपयोग कर py_compile.compile:
import py_compile
py_compile.compile('YourFileName.py')का उपयोग कर py_compile.main():
यह एक बार में कई फाइलों को संकलित करता है।
import py_compile
py_compile.main(['File1.py','File2.py','File3.py'])
जब तक आप चाहें तब तक सूची बढ़ सकती है। वैकल्पिक रूप से, आप स्पष्ट रूप से कमांड लाइन आर्ग्स में मुख्य या यहां तक कि फ़ाइल नामों की सूची पास कर सकते हैं।
या, यदि आप ['-']मुख्य में पास होते हैं तो यह अंतःक्रियात्मक रूप से फाइलों को संकलित कर सकता है।
का उपयोग कर compileall.compile_dir():
import compileall
compileall.compile_dir(direname)
यह आपूर्ति की गई निर्देशिका में मौजूद हर एक पायथन फाइल को संकलित करता है।
का उपयोग कर compileall.compile_file():
import compileall
compileall.compile_file('YourFileName.py')नीचे दिए गए लिंक पर एक नज़र डालें:
py_compileऔर compileallनहीं py_compile.pyया compileall.py। दूसरे शब्दों में, यह होना चाहिए python3 -m py_compile PYTHON_FILENAMEया python3 -m compileall PYTHON_FILES_DIRECTORY।
मैं कंपाइल का उपयोग करूंगा । यह स्क्रिप्ट और कमांड लाइन से अच्छी तरह से काम करता है। यह पहले से उल्लिखित p__compile की तुलना में थोड़ा अधिक उच्च स्तरीय मॉड्यूल / उपकरण है जो आंतरिक रूप से भी उपयोग करता है।
compileallउन फ़ाइलों को छोड़ने के लिए तर्क शामिल नहीं है जिनके लिए संबंधित .pycफ़ाइल पहले से अद्यतित है, क्या यह?
compileallफ़ाइलों को छोड़ देता है जिनमें पहले से ही एक अप-टू-डेट .pyc(पाइथन
python -m compileall <pythonic-project-name>
जो बनाता है सभी को संकलित .pyकरने के लिए .pycपरियोजना जो सबफ़ोल्डर निहित में।
python3 -m compileall <pythonic-project-name>
जो सबफ़ोल्डर में शामिल प्रोजेक्ट में सभी फ़ोल्डरों .pyको संकलित करता है __pycache__।
या इस पोस्ट से ब्राउनिंग के साथ :
आप
.pycफ़ोल्डर में फ़ाइलों के समान लेआउट का उपयोग करके Python2 के रूप में लागू कर सकते हैं:
python3 -m compileall -b <pythonic-project-name>विकल्प फ़ाइलों
-bके उत्पादन.pycको उनकी विरासत-स्थानों (जैसे कि Python2 के समान) में चलाता है।
यदि आप कमांड लाइन का उपयोग कर रहे हैं python -m compileall <argument> python बाइनरी कोड को python कोड संकलित करने के लिए । उदाहरण के लिए:python -m compileall -x ./*
या, आप अपनी लाइब्रेरी को बाइट-कोड में संकलित करने के लिए इस कोड का उपयोग कर सकते हैं।
import compileall
import os
lib_path = "your_lib_path"
build_path = "your-dest_path"
compileall.compile_dir(lib_path, force=True, legacy=True)
def compile(cu_path):
for file in os.listdir(cu_path):
if os.path.isdir(os.path.join(cu_path, file)):
compile(os.path.join(cu_path, file))
elif file.endswith(".pyc"):
dest = os.path.join(build_path, cu_path ,file)
os.makedirs(os.path.dirname(dest), exist_ok=True)
os.rename(os.path.join(cu_path, file), dest)
compile(lib_path)
विस्तृत प्रलेखन के लिए at docs.python.org देखें