ฉันจะแปลง. py เป็น. exe สำหรับ Python ได้อย่างไร


126

ฉันกำลังพยายามแปลงโปรแกรม Python ที่ค่อนข้างเรียบง่ายเป็นไฟล์ปฏิบัติการและไม่พบสิ่งที่ฉันกำลังมองหาดังนั้นฉันจึงมีคำถามสองสามข้อ (ฉันใช้ Python 3.6):

วิธีการทำที่ฉันพบจนถึงตอนนี้มีดังนี้

  1. ดาวน์โหลด Python เวอร์ชันเก่าและใช้ไฟล์ pyinstaller/py2exe
  2. การตั้งค่าสภาพแวดล้อมเสมือนใน Python 3.6 ที่จะช่วยให้ฉันทำ 1.
  3. ดาวน์โหลดตัวแปลง Python เป็น C ++ และใช้สิ่งนั้น

นี่คือสิ่งที่ฉันได้ลอง / สิ่งที่พบปัญหา

  • ฉันติดตั้งpyinstallerก่อนการดาวน์โหลดที่จำเป็นก่อนหน้านั้น (pypi-something) จึงไม่ทำงาน หลังจากดาวน์โหลดไฟล์ข้อกำหนดเบื้องต้นแล้วpyinstallerยังไม่รู้จักไฟล์นั้น
  • ถ้าฉันตั้งค่า Virtualenv ใน Python 2.7 ฉันจำเป็นต้องติดตั้ง Python 2.7 หรือไม่
  • ในทำนองเดียวกันตัวแปลง python เป็น C ++ ตัวเดียวที่ฉันเห็นว่าใช้งานได้จนถึง Python 3.5 เท่านั้น - ฉันจำเป็นต้องดาวน์โหลดและใช้เวอร์ชันนี้หรือไม่หากพยายามทำเช่นนี้

4
ไม่แน่ใจว่าเหตุใดจึงมีการโหวตลดลง (อาจเป็นเพราะคำแนะนำเครื่องมือไม่เหมาะสมสำหรับ SO) แต่คำถามนี้จะเป็นประโยชน์สำหรับผู้อื่นในอนาคต คำถามที่คล้ายกันก่อนหน้านี้ไม่ได้ถูกทำเครื่องหมายว่าผิดหัวข้อเช่นstackoverflow.com/questions/2136837/…
Chris_Rands

คำตอบ:


127

ขั้นตอนในการแปลง. py เป็น. exe ใน Python 3.6

  1. ติดตั้งPython 3.6
  2. ติดตั้ง cx_Freeze (เปิดพร้อมรับคำสั่งแล้วพิมพ์pip install cx_Freeze.
  3. ติดตั้ง idna (เปิดพรอมต์คำสั่งและพิมพ์pip install idna.
  4. เขียน.pyโปรแกรมชื่อmyfirstprog.py.
  5. สร้างไฟล์ python ใหม่ที่ตั้งชื่อsetup.pyบนไดเร็กทอรีปัจจุบันของสคริปต์ของคุณ
  6. ในsetup.pyไฟล์ให้คัดลอกโค้ดด้านล่างแล้วบันทึก
  7. เมื่อกด Shift ให้คลิกขวาที่ไดเร็กทอรีเดียวกันคุณจึงสามารถเปิดหน้าต่างพรอมต์คำสั่งได้
  8. ในพรอมต์ให้พิมพ์ python setup.py build
  9. หากสคริปต์ของคุณปราศจากข้อผิดพลาดก็จะไม่มีปัญหาในการสร้างแอปพลิเคชัน
  10. buildตรวจสอบโฟลเดอร์ที่สร้างขึ้นใหม่ มันมีโฟลเดอร์อื่นอยู่ในนั้น ภายในโฟลเดอร์นั้นคุณจะพบแอปพลิเคชันของคุณ เรียกใช้ ทำตัวให้มีความสุข.

ดูสคริปต์เดิมในของฉันบล็อก

setup.py:

from cx_Freeze import setup, Executable

base = None    

executables = [Executable("myfirstprog.py", base=base)]

packages = ["idna"]
options = {
    'build_exe': {    
        'packages':packages,
    },    
}

setup(
    name = "<any name>",
    options = options,
    version = "<any number>",
    description = '<any description>',
    executables = executables
)

แก้ไข:

  • ให้แน่ใจว่าแทนที่จะmyfirstprog.pyคุณควรใส่ของคุณ.pyชื่อไฟล์นามสกุลเป็นสร้างขึ้นในขั้นตอนที่ 4 ;
  • คุณควรจะรวมถึงแต่ละimportแพคเกจเอ็ดในของคุณ.pyลงในpackagesรายการ (เช่น: packages = ["idna", "os","sys"])
  • any name, any number, any descriptionในsetup.pyไฟล์ไม่ควรยังคงเหมือนเดิมคุณควรเปลี่ยนให้สอดคล้องกัน (เช่น: name = "<first_ever>", version = "0.11", description = '')
  • importแพคเกจเอ็ดจะต้องติดตั้งก่อนที่คุณจะเริ่มต้นขั้นตอนที่ 8

10
มีวิธีทำให้มัน 'ปฏิบัติการ' แบบสแตนด์อโลนหรือไม่? หากฉันดำเนินการตามที่คุณแนะนำในบทความของคุณฉันจะจบลงด้วยโฟลเดอร์ exe.win.32-3.6 ซึ่งเต็มไปด้วยไฟล์และไดเร็กทอรีที่สนับสนุน (เช่น 'คอลเลกชัน /', 'อีเมล' ฯลฯ ) แย่มากสำหรับการพิมพ์แบบธรรมดา ('สวัสดี') ฉันต้องการสร้างไฟล์ปฏิบัติการไฟล์เดียวที่จะทำงานบนคอมพิวเตอร์เครื่องอื่นตามที่เป็นอยู่โดยไม่ต้องใช้ไฟล์อื่น มีตัวเลือกการสร้างสำหรับสิ่งนั้นหรือไม่?
FanaticD


2
@FanaticD Python ไม่ใช่ทางออกที่ดีที่สุดของคุณ Cython (ฝันร้ายในการทำงาน) หรือ Nuitka จะเป็นทางออกที่ดีที่สุดของคุณ แต่การได้ทำงานเหล่านั้นคือความสำเร็จในตัวมันเอง
Tetora

สิ่งนี้จะทำงานใน Python 3.5.3 หรือไม่ (เวอร์ชันเสถียรล่าสุดบน Debian 9 Stretch)
เจอราร์ด

ฉันจะนำเข้าได้from sklearn.externals import joblibอย่างไร ตามที่กล่าวไว้ในการแก้ไขขั้นตอนที่ 2
แจ็ค

77

Python 3.6 รองรับโดย PyInstaller

เปิดหน้าต่าง cmd ในโฟลเดอร์ Python ของคุณ (เปิดหน้าต่างคำสั่งและใช้cdหรือในขณะที่กด shift ค้างไว้ให้คลิกขวาบน Windows Explorer แล้วเลือก 'เปิดหน้าต่างคำสั่งที่นี่') จากนั้นป้อน

pip install pyinstaller

และนั่นแหล่ะ

วิธีที่ง่ายที่สุดในการใช้งานคือป้อนพร้อมรับคำสั่งของคุณ

pyinstaller file_name.py

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้งานโปรดดูคำถามนี้


4
เพิ่งทดสอบกับ python 3.7.0 มีคำเตือนมากมาย แต่รวบรวมได้สำเร็จและทำงานบน windows 10
Ole_S

2
ฉันรวบรวมโปรแกรมด้วย python 3.5.0 และไม่มีคำเตือนหรือข้อผิดพลาดและมันทำงานได้ตามที่คาดไว้
Menotdan

มีใครรู้บ้างว่ามีความสำคัญอย่างไรใน Pyinstaller? exe ที่สร้างบน windows 10 จะทำงานใน windows 8 ได้หรือไม่ หรือ windows 10 32bit build จะทำงานในระบบ windows 10 64 bit?
Derik81

27

มีโครงการที่มาเปิดที่เรียกว่าอัตโนมัติ PY เพื่อ exe เป็นบน GitHub จริงๆแล้วมันยังใช้ PyInstaller ภายใน แต่เนื่องจากมี GUI ง่ายๆที่ควบคุม PyInstaller จึงอาจเป็นทางเลือกที่สะดวกสบาย นอกจากนี้ยังสามารถส่งออกไฟล์แบบสแตนด์อโลนในทางตรงกันข้ามกับโซลูชันอื่น ๆ นอกจากนี้ยังมีวิดีโอแสดงวิธีการตั้งค่า

GUI:

Auto Py เป็น Exe

เอาท์พุท:

เอาท์พุต


2
คุณควรระบุว่าต้องใช้ MVC ++ ข้อผิดพลาด: Microsoft Visual C ++ 14.0 เป็นสิ่งจำเป็น
SKR

3
ฉันไม่พบค่าใด ๆ ในสิ่งนี้เนื่องจากมันถูกสร้างขึ้นบน pyinstaller และหากคุณได้รับข้อผิดพลาดใน pyinstaller คุณจะมีมันที่นี่ด้วย!
CV_passionate

9

ฉันไม่สามารถบอกคุณได้สิ่งที่ดีที่สุด แต่เครื่องมือที่ฉันได้ใช้กับความสำเร็จในอดีตเป็นcx_Freeze พวกเขาเพิ่งอัปเดต (เมื่อวันที่ 7 ม.ค. 60) เป็นเวอร์ชัน 5.0.1 และรองรับ Python 3.6

นี่คือ pypi https://pypi.python.org/pypi/cx_Freeze

เอกสารแสดงให้เห็นว่ามีวิธีดำเนินการมากกว่าหนึ่งวิธีขึ้นอยู่กับความต้องการของคุณ http://cx-freeze.readthedocs.io/en/latest/overview.html

ฉันยังไม่ได้ลองใช้เลยฉันจะชี้ไปที่โพสต์ที่มีการพูดถึงวิธีการง่ายๆ บางอย่างอาจมีการเปลี่ยนแปลงหรือไม่ก็ได้

ฉันจะใช้ cx_freeze ได้อย่างไร


11
ที่น่ากล่าวถึง cxFreeze ไม่ได้ทำไฟล์ปฏิบัติการไฟล์เดียว
Eddie Hart

7

ฉันใช้ Nuitka และ PyInstaller กับแพ็คเกจ PySimpleGUI

Nuitka มีปัญหาในการให้ tkinter รวบรวมกับ Nuikta หนึ่งในผู้ร่วมให้ข้อมูลโครงการได้พัฒนาสคริปต์เพื่อแก้ไขปัญหา

หากคุณไม่ได้ใช้ tkinter อาจ "ใช้ได้ผล" สำหรับคุณ หากคุณใช้ tkinter พูดอย่างนั้นและฉันจะพยายามเผยแพร่สคริปต์และคำแนะนำ

PyInstaller ฉันใช้ 3.6 และ PyInstaller ใช้งานได้ดี! คำสั่งที่ฉันใช้สร้างไฟล์ exe คือ:

pyinstaller -wF myfile.py

-wF จะสร้างไฟล์ EXE ไฟล์เดียว เนื่องจากโปรแกรมทั้งหมดของฉันมี GUI และฉันไม่ต้องการให้หน้าต่างคำสั่งแสดงตัวเลือก -w จะซ่อนหน้าต่างคำสั่ง

สิ่งนี้ใกล้เคียงกับการได้รับสิ่งที่ดูเหมือนโปรแกรม Winforms เพื่อเรียกใช้ซึ่งเขียนด้วย Python

[อัปเดต 20 ก.ค. 2562]

มีโซลูชันที่ใช้ PySimpleGUI GUI ที่ใช้ PyInstaller ใช้ PySimpleGUI เรียกว่าpysimplegui-exemakerและสามารถติดตั้ง pip ได้

pip install PySimpleGUI-exemaker

ในการเรียกใช้หลังจากติดตั้ง:

python -m pysimplegui-exemaker.pysimplegui-exemaker


5

ตอนนี้คุณสามารถแปลงได้โดยใช้ PyInstaller ฉันใช้งานได้แม้กระทั่ง Python 3

ขั้นตอน:

  1. เปิดเครื่องพีซีของคุณ
  2. เปิดพรอมต์คำสั่ง
  3. ป้อนคำสั่ง pip install pyinstaller
  4. เมื่อติดตั้งแล้วให้ใช้คำสั่ง 'cd' เพื่อไปที่ไดเร็กทอรีการทำงาน
  5. เรียกใช้คำสั่ง pyinstall <filename>

ทำไมคนถึงลงคะแนนนี้? ฉันแค่โพสต์คำตอบนี้เพื่อประโยชน์ในการช่วยเหลือ
Tejas Joshi

3
เพราะมันไม่ทำงานบน Python 3.6 ซึ่ง OP เขียนว่าเขาใช้โดยเฉพาะ
uri

Pyinstaller ควรใช้งานได้แล้ว ถ้าไม่เป็นเช่นนั้นบอกฉันในความคิดเห็น
Tejas Joshi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.