Alle pyinstaller detailliertes Beispiel über versteckte import für psutil?
Will ich kompilieren meine python-code, Binär-mithilfe pyinstaller
, aber die hidden import
blockieren mich. Zum Beispiel, den folgenden code importieren psutil
und drucken Sie die CPU-Anzahl:
# example.py
import psutil
print psutil.cpu_count()
Ist und ich den code kompilieren:
$ pyinstaller -F example.py --hidden-import=psutil
Wenn ich die Ausgabe unter dist
:
ImportError: cannot import name _psutil_linux
Dann habe ich versucht:
$ pyinstaller -F example.py --hidden-import=_psutil_linux
Immer noch der gleiche Fehler. Ich habe gelesen das pyinstall Handbuch, aber ich weiß noch nicht, wie die hidden import
. Gibt es ein ausführliches Beispiel für diese? Oder zumindest ein Beispiel zu kompilieren und auszuführen meine example.py
?
ENVs:
- OS: Ubuntu 14.04
- Python: 2.7.6
- pyinstaller: 2.1
warum nach unten Stimmen Sie diesem?
Wahrscheinlich geben nicht die Versionen von python und pyinstaller, die Sie verwenden.
Wahrscheinlich geben nicht die Versionen von python und pyinstaller, die Sie verwenden.
InformationsquelleAutor coanor | 2015-07-07
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hi hoffe du bist noch auf der Suche nach einer Antwort. Hier ist, wie ich es gelöst:
fügen Sie eine Datei namens
hook-psutil.py
Dann rufen Sie
pyinstaller --additional-hooks-dir=(the dir contain the above script) script.py
_psutile_windows
.Für pyinstaller 3 Sie müssen den folgenden code verwenden, um importieren collect_submodules :
from PyInstaller.utils.hooks import collect_submodules
PyInstaller DokumentationInformationsquelleAutor nemo
pyinstall
ist schwer zu konfigurieren, diecx_freeze
vielleicht besser ist, beide unterstützen windows (herunterladen können Sie dasexe
direkt) und linux. Bieten dieexample.py
In windows angenommen, Sie haben installieren Sie python in der Standard-Pfad (C:\\Python27
):den
cxfreeze
ist ein python-Skript, das Sie ausführen sollten, es mitpython
, dann die build-Dateien untersome_path
(mit vielxxx.pyd
undxxx.dll
).Unter Linux ausgeführt werden:
und auch Ausgabe eine Menge von Dateien(
xxx.so
) untersome_path
.Den Mangel der
cx_freeze
ist, würde es nicht wickeln alle Bibliotheken, die zu target-dir, das heißt, Sie müssen testen Sie Ihre bauen unter verschiedenen Umgebungen. Wenn irgendeine Bibliothek fehlt, nur kopieren Sie Sie auf target-dir. Ein Ausnahme Fall ist, zum Beispiel, wenn Sie Ihre bauen Sie Ihre python unter Centos 6, aber beim laufen unter Centos 7, das fehlen von libc.so.6 werfen, sollten Sie kompilieren von python sowohl unter Centos 7 und Centos 6.InformationsquelleAutor coanor
Was für mich gearbeitet ist wie folgt:
Installieren von python-psutil:
sudo apt-get install python-psutil
. Wenn Sieeine Vorherige installation der
psutil
Modul aus anderenMethode, zum Beispiel durch Quell-oder
easy_install
, entfernen Sie Sie zuerst.Laufen
pyinstaller
wie Sie dies tun, ohne diehidden-import
option.InformationsquelleAutor MervS