ฉันกำลังสร้างแอปพลิเคชัน 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/เป็นตัวเลือกเช่นกัน