py2exe missing Modules

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Modding
User
Beiträge: 30
Registriert: Sonntag 28. Februar 2016, 21:11

Hallo,

Ich bin neu hier und hoffe, dass ich mein Problem in die richtige Abteilung geprostet habe.
Ich möchte mit py2exe einen Installer aus einem Python-Script erstellen.

Leider bekomme ich immer diese Fehlermeldung und weiß nicht, wie ich diese richtig beheben kann, ich habe schon versucht die Mpdule direkt in meinem Script mit ein zubinden, jedoch hat das nicht verändert. :|

25 missing Modules
------------------
? Cookie imported from requests.compat
? OpenSSL imported from requests.packages.urllib3.contrib.pyopenssl
? PIL imported from easygui
? Queue imported from requests.packages.urllib3.connectionpool
? Tkinter imported from easygui
? _abcoll imported from requests.packages.urllib3.packages.ordered_dict
? backports imported from requests.packages.urllib3.packages.ssl_match_hostname
? certifi imported from requests.certs
? chardet imported from requests.packages
? cookielib imported from requests.compat
? dummy_thread imported from requests.packages.urllib3.packages.ordered_dict
? ndg imported from requests.packages.urllib3.contrib.pyopenssl
? pyasn1 imported from requests.packages.urllib3.contrib.pyopenssl
? readline imported from cmd, code, pdb
? simplejson imported from requests.compat
? thread imported from requests.packages.urllib3.packages.ordered_dict
? tkFileDialog imported from easygui
? urllib.getproxies imported from requests.compat
? urllib.proxy_bypass imported from requests.compat
? urllib.quote imported from requests.compat
? urllib.quote_plus imported from requests.compat
? urllib.unquote imported from requests.compat
? urllib.unquote_plus imported from requests.compat
? urllib.urlencode imported from requests.compat, requests.packages.urllib3.request
? urllib3 imported from requests.packages
Building 'dist\main.exe'.

Ich hoffe mir kann hier jemand sagen, wie ich die Module richtig einbinde.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Willkommen im Forum!

Leider laesst sich dazu nicht viel sagen. Wie sieht denn die setup.py aus, die du benutzt?
Modding
User
Beiträge: 30
Registriert: Sonntag 28. Februar 2016, 21:11

Danke :D

Mein Code sieht so aus:

Code: Alles auswählen

# -*- coding: utf-8 -*-
 
from distutils.core import setup
import py2exe, sys, os
import easygui
 
file = easygui.fileopenbox("Script")
 
sys.argv.append('py2exe')
 
#windows durch console ersetzen
setup(
    options = {'py2exe': {'includes': "sip, PyQt5.QtNetwork, PyQt5.QtWebKit, PyQt5.QtPrintSupport", 'compressed': True}},
    windows = [{'script': file,
                "icon_resources": [(1, "C:/Bilder/icon.png")]
                }],
    data_files = [('platforms', [
        'C:/Python/Lib/site-packages/PyQt5/plugins/platforms/qwindows.dll'
        ])],
)
Zuletzt geändert von Anonymous am Montag 29. Februar 2016, 12:04, insgesamt 1-mal geändert.
Grund: Quelltext in Code-Tags gesetzt.
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Was passiert, wenn du `requests` zum Bereich `includes` hinzufügst?

Muss es eigentlich zwingend py2exe sein? Ich habe mich zuletzt vor einigen Jahren mit dem Erstellen von EXE-Dateien für Python-Programme beschäftigt, aber soweit ich mich erinnere, kam ich mit PyInstaller besser klar, weil da viel mehr Module automatisch erkannt wurden.
Modding
User
Beiträge: 30
Registriert: Sonntag 28. Februar 2016, 21:11

Dann bekomme ich die selbe Fehlermeldung... :|

Äm nein muss nicht py2exe sein :).
Von PyInstaller hab ich gelesen aber hab es damit leider nicht hinbekommen...

Hättest du ein Script, was mit Hilfe von PyInstaller eine exe-Datei aus meinem Script mit Icon macht?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Du benutzt die "includes" Option falsch. Das muss eine Liste von Strings mit den Modulen sein, kein einzelner Strings in dem die Module Komma-separiert stehen.

Daneben kommt mir die easygui Geschichte komisch vor. Eine setup.py - gerade fuer py2exe - ist sehr speziell fuer das jeweilige Projekt. Benutze besser komplette fuer die jeweiligen Projekte.
Modding
User
Beiträge: 30
Registriert: Sonntag 28. Februar 2016, 21:11

Kannst du mir ein Beispiel schreiben, wie du das mit den "includes" meinst?

Und meinst du ich sollte statt diese easygui-Geschichte einfach nur file = "meineDatei.py" schreiben?
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Modding hat geschrieben:Kannst du mir ein Beispiel schreiben, wie du das mit den "includes" meinst?
Gemeint ist:

Code: Alles auswählen

# Falsch
"includes": "x, y, z"

# Richtig
"includes": ["x", "y", "z"]
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Modding hat geschrieben:Hättest du ein Script, was mit Hilfe von PyInstaller eine exe-Datei aus meinem Script mit Icon macht?

Code: Alles auswählen

pyinstaller --onefile dein_programm.py --icon dein_icon
Das Ergebnis liegt danach als `dein_programm.exe` vor. Ich glaube, im dann automatisch erstellten Unterverzeichnis `dist`.
Modding
User
Beiträge: 30
Registriert: Sonntag 28. Februar 2016, 21:11

Also das mit includes hatte ich schon so aber das ist in diesem Fall falsch, keine Ahnung wieso.... bin das sonst auch nur so gewöhnt.

Bin grade am rätseln wie pyInstaller richtig installiere, muss ich das Zip-Archiv von der Seite in den site-packages Ordner schieben oder wie installiere ich das richtig? :?:
Modding
User
Beiträge: 30
Registriert: Sonntag 28. Februar 2016, 21:11

Code: Alles auswählen

pyinstaller --onefile dein_programm.py --icon dein_icon
Wenn ich diesen Befehl eingebe, bekomme ich Folgene Ausgabe in der Konsole:

78 INFO: PyInstaller: 3.1.1
78 INFO: Python: 3.4.0
78 INFO: Platform: Windows-8-6.2.9200
78 INFO: wrote C:\Users\mytoo\main.spec
93 INFO: UPX is not available.
93 INFO: Extending PYTHONPATH with paths
['C:\\Users\\mytoo\\Desktop\\Modding-Cube-Launcher', 'C:\\Users\\mytoo']
93 INFO: checking Analysis
125 INFO: Building because D:\Programme\Python\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth__tkinter.py changed
125 INFO: Initializing module dependency graph...
125 INFO: Initializing module graph hooks...
140 INFO: Analyzing base_library.zip ...
2171 INFO: Processing pre-find module path hook distutils
3547 INFO: running Analysis out00-Analysis.toc
3656 INFO: Analyzing C:\Users\mytoo\Desktop\Modding-Cube-Launcher\main.py
5531 INFO: Looking for import hooks ...
5547 INFO: Processing hook hook-requests.py
5547 INFO: Processing hook hook-_tkinter.py
5703 INFO: checking Tree
5734 INFO: checking Tree
5848 INFO: Processing hook hook-PyQt5.QtGui.py
6243 INFO: Processing hook hook-PyQt5.py
6258 INFO: Processing hook hook-encodings.py
6274 INFO: Processing hook hook-PyQt5.QtWebKitWidgets.py
6274 INFO: Processing hook hook-PyQt5.QtNetwork.py
6352 INFO: Processing hook hook-xml.py
6415 INFO: Processing hook hook-PyQt5.QtWidgets.py
6415 INFO: Processing hook hook-distutils.py
6415 INFO: Processing hook hook-PyQt5.Qt.py
6430 INFO: Processing hook hook-PyQt5.QtWebKit.py
6430 INFO: Processing hook hook-PyQt5.QtCore.py
6508 INFO: Processing hook hook-pydoc.py
6555 INFO: Looking for ctypes DLLs
6571 INFO: Analyzing run-time hooks ...
6571 INFO: Including run-time hook 'pyi_rth__tkinter.py'
6587 INFO: Including run-time hook 'pyi_rth_qt5.py'
6587 INFO: Including run-time hook 'pyi_rth_qt5plugins.py'
6602 INFO: Looking for dynamic libraries
8589 WARNING: Attempted to add Python module twice with different upper/lowercases: PyQt5.QtWebKitWidgets
8589 WARNING: Attempted to add Python module twice with different upper/lowercases: PyQt5.QtWebKit
8589 WARNING: Attempted to add Python module twice with different upper/lowercases: PyQt5.QtNetwork
8605 WARNING: Attempted to add Python module twice with different upper/lowercases: PyQt5.QtCore
8605 WARNING: Attempted to add Python module twice with different upper/lowercases: PyQt5.QtWidgets
8605 WARNING: Attempted to add Python module twice with different upper/lowercases: PyQt5.QtGui
8605 WARNING: Attempted to add Python module twice with different upper/lowercases: PyQt5.Qt
8605 WARNING: Attempted to add Python module twice with different upper/lowercases: PyQt5.QtPrintSupport
8620 INFO: Looking for eggs
8620 INFO: Using Python library C:\Windows\system32\python34.dll
8620 INFO: Found binding redirects:
[]
8652 INFO: Warnings written to C:\Users\mytoo\build\main\warnmain.txt
8917 INFO: checking PYZ
8917 INFO: Building because toc changed
8917 INFO: Building PYZ (ZlibArchive) C:\Users\mytoo\build\main\out00-PYZ.pyz
9480 INFO: checking PKG
9495 INFO: Building because toc changed
9495 INFO: Building PKG (CArchive) out00-PKG.pkg
30343 INFO: Bootloader D:\Programme\Python\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run.exe
30343 INFO: checking EXE
30343 INFO: Building EXE because out00-EXE.toc is non existent
30358 INFO: Building EXE from out00-EXE.toc
30390 INFO: SRCPATH [('C:\\Users\\mytoo\\Desktop\\Bild\\icon.png', None)]
30390 INFO: Updating icons from C:\Users\mytoo\Desktop\Bild\icon.png to C:\Users\mytoo\AppData\Local\Temp\tmp3m59asde
Traceback (most recent call last):
File "D:\Programme\Python\Scripts\pyinstaller-script.py", line 9, in <module>
load_entry_point('PyInstaller==3.1.1', 'console_scripts', 'pyinstaller')()
File "D:\Programme\Python\lib\site-packages\PyInstaller\__main__.py", line 90, in run
run_build(pyi_config, spec_file, **vars(args))
File "D:\Programme\Python\lib\site-packages\PyInstaller\__main__.py", line 46, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "D:\Programme\Python\lib\site-packages\PyInstaller\building\build_main.py", line 755, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
File "D:\Programme\Python\lib\site-packages\PyInstaller\building\build_main.py", line 701, in build
exec(text, spec_namespace)
File "<string>", line 28, in <module>
File "D:\Programme\Python\lib\site-packages\PyInstaller\building\api.py", line 498, in __init__
self.__postinit__()
File "D:\Programme\Python\lib\site-packages\PyInstaller\building\datastruct.py", line 183, in __postinit__
self.assemble()
File "D:\Programme\Python\lib\site-packages\PyInstaller\building\api.py", line 586, in assemble
icon.CopyIcons(tmpnm, self.icon)
File "D:\Programme\Python\lib\site-packages\PyInstaller\utils\win32\icon.py", line 172, in CopyIcons
hsrc = win32api.LoadLibraryEx(srcpath, 0, LOAD_LIBRARY_AS_DATAFILE)
pywintypes.error: (193, 'LoadLibraryEx', '%1 ist keine zulässige Win32-Anwendung.')

Weiß jemand wie ich jetzt diesen Fehler behebe? :cry:
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Modding hat geschrieben:Also das mit includes hatte ich schon so aber das ist in diesem Fall falsch, keine Ahnung wieso.... bin das sonst auch nur so gewöhnt.
Du bekamst bestimmt eine Fehlermeldung, warum das in dem Fall falsch gewesen sein soll. So kann dir jedenfalls niemand helfen.
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Modding hat geschrieben:Bin grade am rätseln wie pyInstaller richtig installiere, muss ich das Zip-Archiv von der Seite in den site-packages Ordner schieben oder wie installiere ich das richtig? :?:
Am besten mit:

Code: Alles auswählen

pip install pyinstaller
Dann werden auch die benötigten Abhängigkeiten automatisch mitinstalliert.

Ggf `pip` durch `pip3` ersetzen. Und wenn auch das nicht klappt, dann:

Code: Alles auswählen

py -3 -m pip install pyinstaller
EDIT: Klappt es denn ohne den Teil mit dem Icon?
Modding
User
Beiträge: 30
Registriert: Sonntag 28. Februar 2016, 21:11

snafu hat geschrieben:EDIT: Klappt es denn ohne den Teil mit dem Icon?
Ja ohne Bild Klappt es...is aber doof ohne Bild... gibt es eine andere Möglichkeit noch ein Icon bei pyInstaller hinzuzufügen?
Kann die exe-Datei dann auch auf einem PC ohne Python ausgeführt werden?
Weil gerade beim testen der exe-Datei, kam eine Python-Konsole im Hintergrund... :?:

@cofi
cofi hat geschrieben:Du bekamst bestimmt eine Fehlermeldung, warum das in dem Fall falsch gewesen sein soll. So kann dir jedenfalls niemand helfen.
Ich bekommen wenn ich alles so include:

Code: Alles auswählen

'includes': "sip" , "PyQt5.QtNetwork" , "PyQt5.QtWebKit" , "PyQt5.QtPrintSupport" , 'compressed': True
Die Fehlermeldung: invalid Syntax

Und er markiert mir so ein Komma rot an.Wahrscheinlich, weil das Komma für die Trennung zu compressed eine Rolle spielt in dem Script.
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Modding hat geschrieben:Ja ohne Bild Klappt es...is aber doof ohne Bild... gibt es eine andere Möglichkeit noch ein Icon bei pyInstaller hinzuzufügen?
Nein. Hast du meinen Tipp bezüglich ``pip install pyinstaller`` schon angewendet?
Modding hat geschrieben:Kann die exe-Datei dann auch auf einem PC ohne Python ausgeführt werden?
Ja, natürlich. das ist doch der Sinn des Ganzen.
Modding hat geschrieben:Weil gerade beim testen der exe-Datei, kam eine Python-Konsole im Hintergrund... :?:
Ja, indem man ``--noconsole`` beim Aufruf hinzufügt. Übrigens: ``pyinstaller --help`` existiert. Da kann man prima selbst nachsehen und spart sich nervige Frage-Antwort-Spielchen im Forum. :)
Modding hat geschrieben:Ich bekommen wenn ich alles so include:

Code: Alles auswählen

'includes': "sip" , "PyQt5.QtNetwork" , "PyQt5.QtWebKit" , "PyQt5.QtPrintSupport" , 'compressed': True
Die Fehlermeldung: invalid Syntax
Da fehlen die eckigen Klammern um die Liste. Hatte ich auch bereits gezeigt und sollte man auch erwarten können, selbst wenn sich jemand erst seit ein paar Tagen mit Python beschäftigt. Das ist absolutes Basiswissen.
Modding
User
Beiträge: 30
Registriert: Sonntag 28. Februar 2016, 21:11

snafu hat geschrieben:Nein. Hast du meinen Tipp bezüglich ``pip install pyinstaller`` schon angewendet?
Ja hab ich das hatte ich dann schon raus gefunden, dass man den pyInstaller so installiert allerdings brauchte man davor erst noch pywin32, dass es funktioniert.
snafu hat geschrieben:Da fehlen die eckigen Klammern um die Liste. Hatte ich auch bereits gezeigt und sollte man auch erwarten können, selbst wenn sich jemand erst seit ein paar Tagen mit Python beschäftigt. Das ist absolutes Basiswissen.
Äm ja ne, weil das Script habe ich nicht geschrieben, dass ich von jemand anderem, der das in Youtube genau so vor macht und bei dem das Script genau so wie ich es davor rein gepostet habe, funktioniert.... aber mir fehlt auch erhrlich gesagt noch der durchblick, bei Scripten, die nicht von mir sind deshalb sorry das mit den Klammern habe ich nicht ganz wahr genommen.

Ich habe es so wie du gesagt hast noch einmal getestet gerade und nun startet das Script und stürzt sofort danach ohne Fehlermeldung ab. :K

Aber das Script ist jetzt nicht mehr Relevant @snafu, danke das du mir mit dem pyInstaller geholfen hast. Ich werde mir die Tage mit Hilfe, des pyInstallers ein eigenes Script schreiben, was dann auf meine Bedürfnisse abgestimmt ist und hoffentlich fehlerfrei funktioniert ^^

Und noch einmal danke an alle die mir versucht haben zu helfen. :D
Antworten