[英]Any pyinstaller detailed example about hidden import for psutil?
我想使用pyinstaller
將我的 python 代碼編譯為二進制文件,但hidden import
阻止了我。 例如,以下代碼導入psutil
並打印 CPU 計數:
# example.py
import psutil
print psutil.cpu_count()
我編譯代碼:
$ pyinstaller -F example.py --hidden-import=psutil
當我在dist
下運行輸出時:
ImportError: cannot import name _psutil_linux
然后我嘗試:
$ pyinstaller -F example.py --hidden-import=_psutil_linux
還是一樣的錯誤。 我已經閱讀了 pyinstall 手冊,但我仍然不知道如何使用hidden import
。 有詳細的例子嗎? 或者至少是一個編譯和運行我的example.py
的例子?
ENV:
您好,希望您仍在尋找答案。 這是我解決它的方法:
添加一個名為hook-psutil.py
的文件
from PyInstaller.hooks.hookutils import (collect_data_files, collect_submodules)
datas = [('./venv/lib/python2.7/site-packages/psutil/_psutil_linux.so', 'psutil'),
('./venv/lib/python2.7/site-packages/psutil/_psutil_posix.so', 'psutil')]
hiddenimports = collect_submodules('psutil')
然后調用pyinstaller --additional-hooks-dir=(the dir contain the above script) script.py
pyinstall
很難配置, cx_freeze
可能更好,都支持windows(可以直接下載exe
)和linux。 提供example.py
,在 windows 中,假設您已經在默認路徑 ( C:\\\\Python27
) 中安裝了 python:
$ python c:\\Python27\\Scripts\\cxfreeze example.py -s --target-dir some_path
cxfreeze
是一個 python 腳本,你應該用python
運行它,然后構建文件在some_path
下(有很多xxx.pyd
和xxx.dll
)。
在 Linux 中,只需運行:
$ cxfreeze example.py -s --target-dir some_path
並在some_path
下輸出很多文件( xxx.so
)。
cx_freeze
的缺陷是它不會將所有庫都包裝到目標目錄,這意味着您必須在不同的環境下測試您的構建。 如果缺少任何庫,只需將它們復制到目標目錄。 一個例外的情況是,例如,如果您在 Centos 6 下構建您的 python,但在 Centos 7 下運行時,會拋出 libc.so.6 丟失,您應該在 Centos 7 和 Centos 6 下編譯您的 python。
對我有用的是:
安裝 python-psutil: sudo apt-get install python-psutil
。 如果您以前通過其他方法安裝了psutil
模塊,例如通過 source 或easy_install
,請先將其刪除。
像你一樣運行pyinstaller
,沒有hidden-import
選項。
仍然面臨錯誤 Implementation: 1.python program with modules like platform , os ,shutil 和 psutil 當我直接使用 python 運行腳本時,它工作正常。
2.如果我使用pyinstaller構建二進制文件。 二進制文件構建成功。 但是如果我運行二進制文件,我會發現沒有名為 psutil 的模塊。我嘗試了幾種方法,比如添加隱藏的導入和其他東西。 沒有一個在工作。 我嘗試了將近 2 到 3 天。 錯誤: ModuleNotFoundError: No module named 'psutil'命令用於創建二進制pyinstaller --hidden-import=['_psutil_linux'] --onefile --clean serverHW.py
我試過 --additional-hooks-dir= 也不起作用。 當我運行二進制文件時,我正在獲取模塊未找到錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.