Python Pyinstaller 创建单一文件导入目录

2024-05-04 06:10:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我用pyinstaller为windows创建了一个.exe文件,它运行得很好。现在我变得更复杂了,并且创建了多个.py文件,存储在主.py. 我已经阅读了pyinstaller指南,但我似乎有些东西不起作用。。在

我在windows中的文件夹结构如下,我只是用一个简单的例子来说明:

app_root\main.py
app_root\__init__.py
        \library\__init__.py
        \library\app_ext1.py
        \library\app_ext2.py
        \library\test\__init__.py
        \library\test\app3.py

在主.py我正在从导入代码

^{pr2}$

所以我运行pyinstaller主.py使用我的.spec文件。 在我的.spec文件中

hiddenimports=['library']

pyinstaller没有出错并创建了single.exe,但是当我运行single.exe时,我得到了以下错误

C:\Users\user1\Desktop\1_file\dist>main.exe
Traceback (most recent call last):
  File "app_root\main.py", line 2, in <module>
ImportError: No module named 'library'
Failed to execute script main

我只使用一个.py文件编写了一个测试脚本,它使用openpyxl(pythonexcel库)做了一些简单的工作,所以在test.py文件中,我使用了

hiddenimports=['openpyxl']

这很好用,但是openpyxl是使用pip安装的python库,我想我还不完全理解如何导入我自己的模块/脚本,这些模块/脚本存储在主.py脚本文件下的文件夹结构中,我在上面的示例中引用了我的.py脚本文件。在

如何让pyinstaller识别要导入的.py脚本?在


Tags: 文件pytest脚本文件夹appinitmain
1条回答
网友
1楼 · 发布于 2024-05-04 06:10:00

好吧,不知道为什么,但我刚在windows中创建了一个新文件夹,复制了我所有的.py文件,使用了和以前一样的文件夹结构,然后它工作了。唯一缺少的是所有Pycharm文件夹,如.git、.idea和pycache

我在故障排除中注意到,如果我将库重命名为“test”之类的名称并更新了导入行,那么当我执行生成的.exe时,它仍然会引用模块“library”。在

我知道我做的这些都是正确的,但似乎在py charm放在那里的其他文件夹中可能有什么东西。在

所以我每次都要把我所有的文件复制到新文件夹中,然后删除我看到的除.py之外的所有文件夹/文件。在

相关问题 更多 >