ฉันกำลังสร้างแอปพลิเคชัน Python และไม่ต้องการบังคับให้ลูกค้าของฉันติดตั้ง Python และโมดูล
ดังนั้นจะมีวิธีการรวบรวมสคริปต์ Python เพื่อให้สามารถทำงานได้แบบสแตนด์อโลนหรือไม่?
ฉันกำลังสร้างแอปพลิเคชัน Python และไม่ต้องการบังคับให้ลูกค้าของฉันติดตั้ง Python และโมดูล
ดังนั้นจะมีวิธีการรวบรวมสคริปต์ Python เพื่อให้สามารถทำงานได้แบบสแตนด์อโลนหรือไม่?
คำตอบ:
คุณสามารถใช้py2exeตามที่ได้ตอบไปแล้วและใช้cythonเพื่อแปลง.py
ไฟล์คีย์ของคุณในไฟล์ที่.pyc
คอมไพล์ด้วย C เช่น.dll
ใน Windows และ.so
ใน linux ซึ่งยากต่อการย้อนกลับมากกว่าไฟล์ทั่วไป.pyo
และ.pyc
ไฟล์ (และยังเพิ่มประสิทธิภาพ!)
คุณสามารถใช้PyInstallerเพื่อทำแพ็กเกจโปรแกรม Python เป็นไฟล์ปฏิบัติการแบบสแตนด์อโลน มันทำงานบน Windows, Linux และ Mac
PyInstaller Quickstart
ติดตั้ง PyInstaller จาก PyPI:
pip install pyinstaller
ไปที่ไดเรกทอรีของโปรแกรมและเรียกใช้:
pyinstaller yourprogram.py
dist
นี้จะสร้างมัดในไดเรกทอรีย่อยที่เรียกว่า
คุณอาจต้องการที่จะตรวจสอบ Nuitka ใช้ไพ ธ อนซอร์สโค้ดแล้วแปลงเป็น C ++ API call จากนั้นจะรวบรวมเป็นไบนารี่ที่สามารถใช้งานได้ (ELF บน Linux) เป็นเวลาไม่กี่ปีที่ผ่านมาและรองรับ Python เวอร์ชั่นต่างๆ
คุณอาจจะได้รับการปรับปรุงประสิทธิภาพหากคุณใช้มัน แนะนำ
ฉันต้องการรวบรวมข้อมูลที่เป็นประโยชน์เกี่ยวกับการสร้างไฟล์แบบสแตนด์อโลนบน windows โดยใช้ Python 2.7
ฉันใช้py2exeและใช้งานได้ แต่ฉันมีปัญหา
มันแสดงให้เห็นปัญหาบางอย่างสำหรับการสร้างไฟล์เดียวใน Windows 64 บิต: การใช้ bundle_files = 1 กับ py2exe ไม่ทำงาน ;
มีความจำเป็นต้องสร้างไฟล์ setup.py เพื่อให้มันใช้งานได้ http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
ฉันมีปัญหากับการพึ่งพาที่คุณต้องแก้ไขโดยการนำเข้าแพ็คเกจในไฟล์ติดตั้ง;
ฉันไม่สามารถทำงานร่วมกับ PyQt ได้
เหตุผลสุดท้ายนี้ทำให้ผมลองPyInstaller http://www.pyinstaller.org/
ในความคิดของฉันมันจะดีกว่ามากเพราะ:
ฉันขอแนะนำให้สร้างไฟล์. bat ด้วยบรรทัดต่อไปนี้เช่น (pyinstaller.exe ต้องอยู่ใน Windows Path):
pyinstaller.exe --onefile MyCode.py
คุณสามารถสร้างไฟล์เดียวท่ามกลางตัวเลือกอื่น ๆ ( https://pyinstaller.readthedocs.io/en/stable/usage.html#options )
ฉันมีเพียงหนึ่งปัญหาโดยใช้ PyInstaller และแพคเกจ multiprocessing ที่ถูกแก้ไขได้โดยใช้สูตรนี้: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing
ดังนั้นฉันคิดว่าอย่างน้อยสำหรับ python 2.7 ตัวเลือกที่ดีกว่าและง่ายกว่าคือ PyInstaller
--onefile
ตั้งค่าสถานะจะไม่ช่วยให้คุณพกพาได้บน Windows เนื่องจากไฟล์ปฏิบัติการยังต้องการเชื่อมโยงกับapi-ms-win-crt-runtime-l1-1-0.dll
ไลบรารี (หรือ / และอื่น ๆ ) ซึ่งจะต้องติดตั้งผ่านvcredist
แพ็คเกจ ดังนั้นการพึ่งพายังคงมีและจะต้องติดตั้งก่อนที่จะเรียกใช้
ใช่เป็นไปได้ที่จะรวบรวมสคริปต์ Python ในการปฏิบัติการแบบสแตนด์อโลน
PyInstallerสามารถใช้ในการแปลงโปรแกรมหลามเข้า executables แบบสแตนด์อะโลนภายใต้ของ Windows , Linux , Mac OS X , FreeBSD , SolarisและAIX มันเป็นหนึ่งในตัวแปลงที่แนะนำ
py2exeแปลงสคริปต์ Python เป็นไฟล์ปฏิบัติการในแพลตฟอร์ม Windows เท่านั้น
Cythonเป็นคอมไพเลอร์แบบคงที่สำหรับทั้งภาษาการเขียนโปรแกรม Python และภาษาการเขียนโปรแกรมแบบ Cython
และตัวเลือกที่สามคือcx_Freeze
ซึ่งเป็นแพลตฟอร์มข้าม
cx_Freeze
เผยแพร่ใน pypi ตั้งแต่ปลายปี 2560 โครงการนี้ถูกยกเลิกหรือไม่
ใช้ py2exe .... ใช้ไฟล์ติดตั้งด้านล่าง:
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 - โดยเฉพาะตัวแปร "windowed":
pyinstaller --onefile --windowed myscript.py
มันจะสร้างไฟล์ * .exe หนึ่งไฟล์ในโฟลเดอร์ / dist
ฉันยังแนะนำ pyinstaller
สำหรับความเข้ากันได้ย้อนหลังที่ดีกว่าเช่น python 2.3 - 2.7
สำหรับpy2exeคุณต้องมี python 2.6
สำหรับสคริปต์ Python 3.2 ทางเลือกเดียวคือ Cxfreeze สร้างจากแหล่งอื่นมิฉะนั้นจะไม่ทำงาน
สำหรับ python 2.x ฉันขอแนะนำให้ pyinstaller เพราะมันสามารถทำแพ็คเกจโปรแกรมไพ ธ อนได้ในการปฏิบัติการครั้งเดียวซึ่งแตกต่างจาก CxFreeze ซึ่งเอาท์พุทยังไลบรารี่
pyinstaller yourfile.py -F --onefile
สิ่งนี้จะสร้างไฟล์ EXE แบบสแตนด์อโลนใน Windows หมายเหตุสำคัญ: ไฟล์ exe จะถูกสร้างขึ้นในโฟลเดอร์ที่ชื่อว่า 'dist'
คุณสามารถติดตั้ง pyinstaller โดยใช้ pip install PyInstaller
py2exe จะทำให้ไฟล์ exe ที่คุณต้องการ แต่คุณต้องมี MSVCR90.dll รุ่นเดียวกันบนเครื่องที่คุณกำลังจะใช้ exe ใหม่ของคุณ ดูhttp://www.py2exe.org/index.cgi/Tutorialสำหรับข้อมูลเพิ่มเติม
คุณสามารถหารายชื่อของสาธารณูปโภคกระจายจดทะเบียน @ https://wiki.python.org/moin/DistributionUtilities
ฉันใช้bbfreezeและใช้งานได้ดีมาก (แต่ก็ยังรองรับ python 3 ด้วย)
.so
ไฟล์หลาย ๆไฟล์หรือคัดลอกไฟล์ .egg โดยตรงและพวกเขาทั้งหมดจะปรากฏในไดเรกทอรีเดียว (หรือเป็นไฟล์เดียว) ไม่จำเป็นต้องติดตั้ง
ไม่ว่าบรรจุภัณฑ์ของรหัสหลาม แต่มีตอนนี้ยังไม่พอใจจาก Google ซึ่ง transpiles รหัสที่จะไป มันไม่รองรับ python C api ดังนั้นมันอาจไม่ทำงานสำหรับทุกโครงการ
ใช้ pyinstaller ผมพบว่าวิธีที่ดีกว่าใช้ทางลัดไปที่ exe --onefile
มากกว่าทำ อย่างไรก็ตามอาจมีไฟล์ข้อมูลอยู่รอบ ๆ และหากคุณใช้งานแอพตามไซต์โปรแกรมของคุณก็ขึ้นอยู่กับไฟล์ html, js, css ด้วย ไม่มีจุดในการย้ายไฟล์ทั้งหมดเหล่านี้ที่ไหนสักแห่ง .. จะเกิดอะไรขึ้นถ้าเราย้ายเส้นทางการทำงานขึ้นมา
สร้างทางลัดไปยัง exe ย้ายที่ด้านบนและตั้งค่าเส้นทางและเส้นทางเริ่มต้นตามที่ระบุเพื่อให้เส้นทางสัมพัทธ์ไปที่ dist \ folder:
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe
Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
สามารถเปลี่ยนชื่อทางลัดเป็นสิ่งใดก็ได้ดังนั้นเปลี่ยนชื่อเป็น "GTFS-Manager"
ตอนนี้เมื่อฉันสองครั้ง - คลิกทางลัดราวกับว่าฉัน python-run ไฟล์! ฉันพบวิธีการนี้ดีกว่าวิธีการ--onefile
หนึ่งดังนี้:
โอ้โปรดอย่าลืมลบโฟลเดอร์ออกหลังจากสร้างแล้วจะบันทึกตามขนาด
ใช้ Cython เพื่อแปลงเป็น c, คอมไพล์และเชื่อมโยงกับ gcc อีกอย่างคือทำให้ฟังก์ชั่นหลักใน c (อันที่คุณต้องการทำให้ยากที่จะย้อนกลับ) รวบรวมและใช้การเพิ่มหลามเพื่อนำเข้ารหัสที่คอมไพล์แล้ว จากนั้นใช้เครื่องมือใด ๆ ที่กล่าวถึงเพื่อแจกจ่าย
ฉันบอกว่า PyRun https://www.egenix.com/products/python/PyRun/เป็นตัวเลือกเช่นกัน