Pyinstaller使用外部库创建可执行文件

时间:2019-09-03 12:21:11

标签: python python-3.x exe pyinstaller libraries

我正在尝试为我用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

1 个答案:

答案 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.devicemanagervenv

(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