我有来自 python 项目的以下文件结构:
├───gui
│ gui.py
│ gui.ui
│
├───resources
│ │ res.py
│ │ res.qrc
│ │ res_rc
│ │
│ ├───css
│ │ style.qss
│ │
│ ├───icons
│ │ test.png
│ │
│ └───settings
│ settings.ini
│
└───source
│ main.py
│
├───manager0
│ test0.py
│
├───manager1
│ test1.py
│
└───manager2
test2.py
main.py
文件夹中的source
,包含其他依赖的.py
文件如下:
import sys
from PyQt5.QtWidgets import *
from PyQt5 import QtCore
from PyQt5.uic import loadUi
sys.path.append('../project/resources')
from resources import project
from source.manager0.test0 import *
from source.manager1.test1 import *
from source.manager2.test2 import *
...
我想使用 pyinstaller 创建一个
.exe
文件,为此我尝试了以下命令:
C:\Users\us\proejct\source> pyinstaller --onefile main.py
或者使用以下方法添加路径:
C:\Users\us\proejct\source> pyinstaller main.py --paths ..\resources\ --paths ..\source\
在这两种情况下都会创建一个
.exe
文件。但如果启动,我会收到如下错误:
ModuleNotFoundError: No module named 'resources'
ModuleNotFoundError: No module named 'source'
相对于
main.py
,文件夹../project
不存在,所以sys.path.append('../project/resources')
行没有用。 resources
文件夹位于路径 ../resources
处,因此为了能够从中导入,您应该编写
sys.path.append('..')
manager0,1,2
文件夹与main.py
位于同一文件夹中,因此您可以写入
from manager0.test0 import *
from manager1.test1 import *
from manager2.test2 import *
我还注意到
project
文件夹中没有resources
文件夹,是不是拼写错误?所以,from resources import project
总是会失败。如果要导入resources/res.py
,可以写
from resources import res
请注意,此导入必须在
sys.path.append
调用之后进行。
完成这些更改后,您可以使用以下命令编译
main.py
:
pyinstaller --onefile main.py --paths ..