2017-03-16 3 views
1

Ich habe mein erstes vollständiges Python-Programm beendet und versuche eine EXE zu erstellen. Ich habe erfolgreich die exe gebaut, aber es läuft und tut nichts. Ich nehme an, es enthielt nicht alle Pakete. Ich kann diese mit der build_exe_options in cx_Freeze angeben, aber ich weiß nicht den Unterschied zwischen Pakete und schließt aus.Was sind die verschiedenen build_exe_options für cx_Freeze und Python?

Diese werden alle Importe ich in meinem Programm verwenden

import os 
import smtplib 
from datetime import datetime, timedelta 
from ftplib import FTP_TLS 
from email.mime.text import MIMEText 
from email.mime.multipart import MIMEMultipart 

Unten ist meine aktuelle Setup-Datei

from cx_Freeze import setup, Executable 

setup(
    name = "FTPConnect", 
    version = "1.0", 
    description = "Connects to FTP to download docs", 
    executables = [Executable("main.py")] 
) 

Ich vermute, ich etwas tun kann, nicht wahr?

from cx_Freeze import setup, Executable 

# Dependencies are automatically detected, but it might need fine tuning. 
build_exe_options = {"packages": ["os", "smtplib", "datetime", "ftplib", "email.mime.text", "email.mime.multipart" ], "excludes": []} 

setup(
     name = "FTPConnect", 
     version = "1.0", 
     description = "Connects to FTP to download docs", 
     options = {"build_exe": build_exe_options}, 
     executables = [Executable("main.py")] 
) 
+0

Ich habe gerade eine Schwierigkeit erlebt, die ähnlich aussieht (https://stackoverflow.com/questions/45734926/build-a-exe-for-windows-from-a-python-3-script-importing-pyqtgraph-and- Öffnung). Hast du irgendwann Verbesserungen bekommen? –

Antwort

3

Nun, 'packages' wird umfassen ein Paket mit all seiner Submodule, während 'exclude' die aufgelisteten Module ausschließen.

Lesen Sie mehr über alle möglichen Werte hier: http://cx-freeze.readthedocs.io/en/latest/distutils.html#build-exe. Es ist eine Liste von Befehlszeilenoptionen, aber das wird auch in Ihrem Skript funktionieren.

Es gibt viele andere Optionen, die das Einschließen und Ausschließen von gezippten Modulen, DLL-Binärdateien und so weiter erlauben.

Hoffe, das hilft!

+0

Also, wenn ich 'includes' anstelle von Paketen verwenden würde, könnte ich dann nur bestimmte Teile eines Pakets importieren? Und wenn ich das ganze Paket haben wollte, würde ich nur Pakete verwenden? Warum sollte ich jemals ein Modul ausschließen wollen, sollte es ausgeschlossen werden, wenn ich es nicht aufgenommen habe, oder? –

+0

Manchmal importiert 3th-Party-Module eine Menge Mist, die Sie nicht brauchen, diese werden nur Ihre exe sprengen. Indem Sie sie ausschließen, werden sie ... von Ihrer exe ausgeschlossen. – linusg

+0

Macht Sinn. Vielen Dank! –

Verwandte Themen