আমি পাইথন অ্যাপ্লিকেশন তৈরি করছি এবং আমার ক্লায়েন্টদের পাইথন এবং মডিউলগুলি ইনস্টল করতে বাধ্য করতে চাই না।
তাহলে, পাইথন স্ক্রিপ্টকে এককভাবে সম্পাদনযোগ্য হতে সংকলন করার কোনও উপায় আছে?
আমি পাইথন অ্যাপ্লিকেশন তৈরি করছি এবং আমার ক্লায়েন্টদের পাইথন এবং মডিউলগুলি ইনস্টল করতে বাধ্য করতে চাই না।
তাহলে, পাইথন স্ক্রিপ্টকে এককভাবে সম্পাদনযোগ্য হতে সংকলন করার কোনও উপায় আছে?
উত্তর:
আপনি ইতিমধ্যে উত্তর হিসাবে পাইটেক্সি ব্যবহার করতে পারেন এবং সিথন ব্যবহার করে আপনার মূল .py
ফাইলগুলিকে .pyc
সি সিলেক্ট করা ফাইল যেমন .dll
উইন্ডোজ এবং .so
লিনাক্সে সাধারণ .pyo
এবং .pyc
ফাইলগুলির তুলনায় ফিরিয়ে আনতে আরও শক্ত (এবং কার্যকারিতাও অর্জন করতে পারেন!)
আপনি ব্যবহার করতে পারেন PyInstaller স্বতন্ত্র এক্সেকিউটেবল যেমন পাইথন প্রোগ্রাম প্যাকেজ। এটি উইন্ডোজ, লিনাক্স এবং ম্যাকে কাজ করে।
পাই ইনস্টলারের কুইকস্টার্ট
পাইপিআই থেকে পাই ইনস্টলারের ইনস্টল করুন:
pip install pyinstaller
আপনার প্রোগ্রামের ডিরেক্টরিতে যান এবং চালান:
pyinstaller yourprogram.py
এটি নামের একটি উপ-ডিরেক্টরিতে বান্ডেল তৈরি করবে
dist
।আরও বিশদ ওয়াকথ্রোয়ের জন্য ম্যানুয়ালটি দেখুন ।
আপনি নিটকা তদন্ত করতে ইচ্ছুক হতে পারে । এটি অজগর সোর্স কোড নেয় এবং এটিকে C ++ API কলগুলিতে রূপান্তর করে। তারপরে এটি একটি এক্সিকিউটেবল বাইনারি (লিনাক্সে ইএলএফ) তৈরি করে। এটি কয়েক বছর ধরে প্রায় হয়েছে এবং পাইথন সংস্করণের বিস্তৃত পরিসরকে সমর্থন করে।
আপনি যদি এটি ব্যবহার করেন তবে আপনি সম্ভবত একটি পারফরম্যান্সের উন্নতিও পাবেন। প্রস্তাবিত।
আমি পাইথন ২.7 ব্যবহার করে উইন্ডোতে স্ট্যান্ডলোন ফাইল তৈরির বিষয়ে কিছু দরকারী তথ্য সংকলন করতে চাই।
আমি পাইপেক্স ব্যবহার করেছি এবং এটি কাজ করে তবে আমার কিছু সমস্যা হয়েছিল।
এটি উইন্ডোজ b৪ বিটগুলিতে একক ফাইল তৈরি করতে কিছু সমস্যা দেখিয়েছে: পাইডেক্সের সাথে bundle_files = 1 ব্যবহার করা কাজ করছে না ;
এটি কাজ করার জন্য একটি সেটআপ.পি ফাইল তৈরি করা প্রয়োজন। http://www.py2exe.org/index.cgi/ টিউটোরিয়াল# স্টেপ 2 ;
আপনার সেটআপ ফাইলটিতে প্যাকেজগুলি আমদানির মাধ্যমে সমাধান করতে হবে এমন নির্ভরতাগুলির সাথে আমার সমস্যা হয়েছে;
আমি পাইকিউটির সাথে এটি একসাথে কাজ করতে সক্ষম হইনি ..
এই শেষ কারণটি আমাকে পাইআইনস্টলারের http://www.pyinstaller.org/ চেষ্টা করে তোলে ।
আমার মতে এটি অনেক ভাল কারণ:
আমি উদাহরণস্বরূপ নিম্নলিখিত পংক্তির সাহায্যে একটি .bat ফাইল তৈরি করার পরামর্শ দিচ্ছি (পাইওয়াইনস্টিলারএক্সেক্স অবশ্যই উইন্ডোজ পাথের মধ্যে থাকতে হবে):
pyinstaller.exe --onefile MyCode.py
অন্যান্য বিকল্পগুলির মধ্যে আপনি একটি একক ফাইল তৈরি করতে পারেন ( https://pyinstaller.readthedocs.io/en/stable/usage.html#options )।
পাইআইন্সটলার এবং মাল্টিপ্রসেসিং প্যাকেজটি ব্যবহার করে আমার কেবল একটি সমস্যা ছিল যা এই রেসিপিটি ব্যবহার করে সমাধান করা হয়েছিল: https://github.com/pyinstaller/pyinstaller/wiki/Recipe- মাল্টিপ্রসেসিং ।
সুতরাং, আমি মনে করি যে, পাইথন ২. 2. এর জন্য কমপক্ষে একটি আরও সহজ এবং সহজ বিকল্প পাইআইনস্টলার।
--onefile
পতাকা আপনি এটা Windows এ পোর্টেবল করতে সাহায্য করবে না, কারণ এক্সিকিউটেবল এখনও সঙ্গে লিঙ্ক করতে চায় api-ms-win-crt-runtime-l1-1-0.dll
গ্রন্থাগার (অথবা / এবং অন্যদের), যার মাধ্যমে ইনস্টল করা আবশ্যক vcredist
প্যাকেজ। সুতরাং একটি নির্ভরতা এখনও আছে এবং রান করার আগে অবশ্যই ইনস্টল করা উচিত।
হ্যাঁ, পাইথন স্ক্রিপ্টগুলি এককভাবে সম্পাদনযোগ্য হিসাবে সংকলন করা সম্ভব।
PyInstaller অনুষঙ্গহীন এক্সেকিউটেবল মধ্যে পাইথন প্রোগ্রাম রূপান্তর করতে অধীন ব্যবহার করা যেতে পারে উইন্ডোজ , লিনাক্স , ম্যাক OS X , FreeBSD 'র , সোলারিস এবং , AIX । এটি প্রস্তাবিত রূপান্তরকারীদের মধ্যে একটি।
পাই 2 এক্সই পাইথন স্ক্রিপ্টগুলিকে উইন্ডোজ প্ল্যাটফর্মে কেবল এক্সিকিউটেবলে রূপান্তরিত করে।
সিথন পাইথন প্রোগ্রামিং ভাষা এবং বর্ধিত সাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজ উভয়ের জন্য একটি স্থিতিশীল সংকলক।
এবং তৃতীয় বিকল্পটি হ'ল cx_Freeze
, যা ক্রস প্ল্যাটফর্ম।
cx_Freeze
আছি এবং 2017 এর শেষের পরে পাইপিতে কোনও তালিকাভুক্ত প্রকাশ নেই this এই প্রকল্পটি কি পরিত্যক্ত ছিল?
আপনি পাইপেক্স পছন্দ করতে পারেন । লিনাক্সের জন্য এটি করার জন্য আপনি সেখানে ইনফোগুলিও পাবেন
পাইপেক্স ব্যবহার করুন .... নীচে সেট আপ ফাইলগুলি ব্যবহার করুন:
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import matplotlib
setup(
console=['PlotMemInfo.py'],
options={
'py2exe': {
'packages' : ['matplotlib'],
'dll_excludes': ['libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll']
}
},
data_files = matplotlib.get_py2exe_datafiles()
)
আমি পাইনাস্টলার পছন্দ করি - বিশেষত " উইন্ডোড " বৈকল্পিক:
pyinstaller --onefile --windowed myscript.py
এটি একটি ডিস্ট / ফোল্ডারে একটি একক * .exe ফাইল তৈরি করবে।
আমি পাইথনস্টলারেরও
আরও ভাল পশ্চাদপদ সামঞ্জস্যের জন্য যেমন পাইথন ২.৩ - ২.7 সুপারিশ করি।
জন্য py2exe , আপনি পাইথন 2.6 থাকতে হবে
পাইথন ৩.২ স্ক্রিপ্টগুলির জন্য একমাত্র পছন্দ হ'ল সিএক্সফ্রিজে। উত্স থেকে এটি তৈরি করুন অন্যথায় এটি কাজ করবে না।
পাইথন ২.x-এর জন্য আমি পাইস্টোনলারের পরামর্শ দিচ্ছি কারণ এটি সিএক্সফ্রিজে ভিন্ন গ্রন্থাগারগুলিকে পৃথক করে একটি এক্সিকিউটেবলে পাইথন প্রোগ্রামটিকে প্যাকেজ করতে পারে।
পাইপেক্স আপনার পছন্দসই এক্সাইপ ফাইলটি তৈরি করবে তবে আপনি যে নতুন মেশিনটি ব্যবহার করতে চলেছেন সেই মেশিনে আপনার MSVCR90.dll এর একই সংস্করণ থাকা দরকার। আরও তথ্যের জন্য http://www.py2exe.org/index.cgi/ টিউটোরিয়াল দেখুন ।
আপনি @ https://wiki.python.org/moin/Dist वितरणUtilities তালিকাভুক্ত বিতরণ ইউটিলিটির তালিকা পেতে পারেন ।
আমি বিবিফ্রিজে ব্যবহার করি এবং এটি খুব ভালভাবে কাজ করছে (এখনও পাইথন 3 সাপোর্ট পাওয়া যায়)।
.so
ফাইলে সংকলন করবে , বা .egg ফাইলগুলি সরাসরি অনুলিপি করবে এবং সেগুলি একক ডিরেক্টরিতে (বা একক ফাইল হিসাবে) উপস্থিত থাকবে। কোন ইনস্টলেশন প্রয়োজন হয় না।
পাইনস্টলার ব্যবহার করে, আমি .exe তৈরির পরিবর্তে শর্টকাট ব্যবহার করে একটি আরও ভাল পদ্ধতি পেয়েছি --onefile
। যাইহোক, সম্ভবত কিছু ডেটা ফাইল রয়েছে এবং আপনি যদি কোনও সাইট-ভিত্তিক অ্যাপ চালাচ্ছেন তবে আপনার প্রোগ্রামটি এইচটিএমএল, জেএস, সিএসএস ফাইলের উপরও নির্ভর করে। এই সমস্ত ফাইল অন্য কোথাও সরানোর কোনও মানে নেই .. পরিবর্তে যদি আমরা কর্মপথটি উপরে নিয়ে যাই তবে।
এক্সের শর্টকাট তৈরি করুন, এটিকে শীর্ষে স্থানান্তরিত করুন এবং নির্দিষ্ট and ফোল্ডারে যাওয়ার পথে আপেক্ষিক পাথগুলি নির্দিষ্ট করার মতো লক্ষ্য এবং স্টার্ট-ইন পাথগুলি সেট করুন:
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe
Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
"জিটিএফএস-ম্যানেজার" -এর নামকরণ করে শর্টকাটকে যে কোনও কিছুতে পুনরায় নামকরণ করা যেতে পারে
এখন আমি দ্বিগুণ হলে শর্টকাট ক্লিক করুন, আমি যেন অজগর চালিয়েছি! আমি এই পদ্ধতির চেয়ে ভাল দেখতে পেয়েছি --onefile
:
ওহ, বিল্ডিংয়ের পরে বিল্ড ফোল্ডারটি মুছে ফেলতে ভুলবেন না, আকারে সাশ্রয় হবে।
সি সি রূপান্তর করতে সিথন ব্যবহার করুন, সংকলন এবং জিসিসির সাথে লিঙ্ক করুন। আর একটি হতে পারে, সি-তে মূল ফাংশনগুলি তৈরি করুন (আপনি যেগুলি বিপরীত করে তুলতে চান) এটি সংকলন করুন এবং সংকলিত কোডটি আমদানি করার জন্য পাইথন বুস্ট ব্যবহার করুন (প্লাস আপনি আরও দ্রুত কোড কার্যকর করতে পারেন)। তারপরে বিতরণ করার জন্য উল্লিখিত যে কোনও সরঞ্জাম ব্যবহার করুন।
আমাকে বলা হয়েছে যে পাইরুন, https://www.egenix.com/products/python/PyRun/ , এছাড়াও একটি বিকল্প।