我正在尝试为我用PyCharm编写的Python脚本创建可执行文件(exe)。 当我从PyCharm运行脚本时,运行正常,但是当我尝试将其作为单独的.py运行或尝试运行exe时,却出现错误。
我认为该问题与“从infi.devicemanager导入DeviceManager”库有关。
from infi.devicemanager import DeviceManager # Used for the retrievement of Device manager information
dm = DeviceManager()
dm.root.rescan()
devs = dm.all_devices # Get all the devices to a list called devs
for d in devs:
print (d.description)
我收到以下错误:
PS C:\Python> python.exe .\tests.py
Traceback (most recent call last):
File ".\tests.py", line 1, in <module>
import infi.devicemanager # Used for the retrievement of Device manager information
ModuleNotFoundError: No module named 'infi'
PS C:\Python> pyinstaller -F .\tests.py
PS C:\Python\dist> .\tests.exe
Traceback (most recent call last):
File "tests.py", line 1, in <module>
ModuleNotFoundError: No module named 'infi'
[15072] Failed to execute script tests
有没有办法将此库包含到exe文件中,以便任何没有python的人都可以运行此脚本? 我愿意提出建议。
提前谢谢!
===更新=== 完整的脚本可以在这里找到 https://github.com/elessargr/k9-serial
答案 0 :(得分:0)
我的回答假设OP中的注释中具有infi.devicemanager
的解释器为C:\Python\venv\Scripts\python.exe
因此有一个名为venv
的虚拟环境。您需要激活虚拟环境并在其中安装PyInstaller。
C:\Python>venv\Scripts\activate
(venv)C:\Python>
请注意(venv)
位于您的Shell前面-这意味着虚拟环境venv
已激活
现在安装PyInstaller
(venv)C:\Python>pip install pyinstaller
-- here it will install pyinstaller --
现在您可以测试pyinstaller
中是否同时安装了infi.devicemanager
和venv
(venv)C:\Python>pip list
它应该列出其他两个软件包。现在
(venv)C:\Python>pyinstaller -F C:\Python\tests.py --hidden-import=infi.devicemanager
--here it will create the exe --
如果我是对的,它应该可以正常工作
编辑:看来infi
正在使用__import__(pkg_resources)
,所以命令应该是
(venv)C:\Python>pyinstaller -F C:\Python\tests.py --hidden-import=infi.devicemanager --hiden-import=pkg_resources