উত্তর:
আপনি compileallটার্মিনাল ব্যবহার করতে পারেন । নিম্নলিখিত কমান্ডটি উপ ডিরেক্টরিগুলিতে পুনরাবৃত্তভাবে যেতে হবে এবং এটি খুঁজে পাওয়া সমস্ত অজগর ফাইলের জন্য পিআইসি ফাইল তৈরি করবে। Compileall তাই আপনি এটি ব্যবহার করতে কিছু অতিরিক্ত ইনস্টল করার প্রয়োজন হবে না মডিউল, পাইথন মান গ্রন্থাগার অংশ। এটি পাইথন 2 এবং পাইথন 3 এর জন্য ঠিক একইভাবে কাজ করে।
python -m compileall .
-Oবাইটোকোড (.pyo ফাইল আইসো। পিপিসি) সংকলনের জন্য পতাকাটিতে একবার দেখুন ।
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।
আমি সংকলন ব্যবহার করব । এটি স্ক্রিপ্ট থেকে এবং কমান্ড লাইন থেকে উভয়ই দুর্দান্তভাবে কাজ করে। এটি ইতিমধ্যে উল্লিখিত py_compile এর চেয়ে কিছুটা উচ্চ স্তরের মডিউল / সরঞ্জাম যা এটি অভ্যন্তরীণভাবেও ব্যবহার করে।
compileallফাইলগুলি এড়িয়ে যাওয়ার জন্য যুক্তি অন্তর্ভুক্ত করে না যার জন্য সংশ্লিষ্ট .pycফাইলটি ইতিমধ্যে আপ টু ডেট রয়েছে, তাই না?
compileallফাইল ইতিমধ্যে একটি আপ-টু-ডেট আছে লাফালাফি করে .pyc(পাইথন 2.7.11 সাথে পরীক্ষিত)
python -m compileall <pythonic-project-name>
যার ফলে সব কম্পাইল .pyকরার .pycপ্রকল্পে সাবফোল্ডার অন্তর্ভুক্ত হবে।
python3 -m compileall <pythonic-project-name>
যার ফলে সব কম্পাইল .pyকরার __pycache__প্রকল্পে সাবফোল্ডার অন্তর্ভুক্ত ফোল্ডার নেই।
অথবা এই পোস্টটি থেকে বাদামী :
.pycপাইথন 2 এর মতো ফোল্ডারে ফাইলগুলির একই লেআউটটি প্রয়োগ করতে পারেন :
python3 -m compileall -b <pythonic-project-name>বিকল্পটি তাদের উত্তরাধিকারের অবস্থানগুলিতে ফাইলগুলির
-bআউটপুট ট্রিগার করে.pyc(অর্থাত পাইথন 2-তে একই)।
আপনি যদি python -m compileall <argument>পাইথন বাইনারি কোডে পাইথন কোডটি সংকলন করতে কমান্ড লাইন ব্যবহার করেন। উদা: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)
বিস্তারিত ডকুমেন্টেশনের জন্য s docs.python.org দেখুন