首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModuleNotFound Pyinstaller

ModuleNotFound Pyinstaller
EN

Stack Overflow用户
提问于 2022-08-26 02:04:17
回答 2查看 85关注 0票数 0

我正在使用:

  • PyInstaller 5.3
  • Python 3.9
  • 11

我的目录设置如下:

代码语言:javascript
复制
Project
|
+ -- DoSomething
|    |
|    +-- doessomething.py
|
+ -- GUIs
     |
     +--GUI_main.py

.py文件包含以下代码:

doessomething.py

代码语言:javascript
复制
def doing():
        print('Doing')

GUI_main.py

代码语言:javascript
复制
from DoSomething.doessomething import *
doing()

  1. 我尝试了以下命令

代码语言:javascript
复制
pyinstaller --onefile --noconsole GUIs/GUI_main.py
pyinstaller --onefile --noconsole -p /path/to/DoSomething/dir GUIs/GUI_main.py

其中DoSomething的路径是我的计算机上的绝对路径。

工作目录作为项目directory

  • The工作目录作为图形用户界面目录

该程序在PyCharm中编译和运行良好,但是在用PyInstaller打包并运行它之后,我得到以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "GUI_main.py," line 1, in <module>
ModuleNotFoundError: No module named 'DoSomething'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-26 16:26:52

简单地说,您告诉PyInstaller的目录是错误的;您希望使用-p /path/to/Project。这是因为您的DoSomething文件夹位于根目录Project中。您正在告诉PyInstaller在哪里查找要导入的模块/包。

为了更多的背景..。

我自己并不使用PyCharm,但是它似乎是自动地为您处理一些事情:它将顶级Project路径添加到您的Python路径中。这意味着当您的代码试图导入模块时,Project是它查找该模块名称的位置之一。这就是您的代码在PyCharm中工作的原因。

如果您打开一个标准终端,转到Project,并运行python GUIs/GUI_main.py,您应该会发现您得到了一个ModuleNotFoundError。为了使其工作,您可以将适当的目录添加到Python路径环境变量(对于当前会话)中:

代码语言:javascript
复制
export PYTHONPATH=/path/to/Project:$PYTHONPATH

这样做之后,直接运行脚本就可以了。同样整洁的是PyInstaller尊重您的Python路径..。因此,您可以在不指定任何搜索文件夹的情况下运行PyInstaller,并且它将正确地找到您的其他Python文件。

Sidenote:标准做法是将Python包/模块(本质上是文件夹/文件)名称保持为小写。

票数 1
EN

Stack Overflow用户

发布于 2022-10-22 14:55:59

我发现我的结构不是最聪明的。我能够使用pyinstaller而不使用命令中的完整路径。将主GUI python文件保存在主项目文件夹中可以解决这个问题。就像这样

代码语言:javascript
复制
ProjectFolder
|
+ -- DoSomething
|    | 
|    +-- __init__.py
|    |
|    +-- doessomething.py
|
+ -- GUIs
|    |
|    +--add_on_gui.py
|
+ GUI_main.py

然后在项目目录中的命令行中。

pyinstaller --onefile --noconsole GUI_main.py

这对我起了作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73495388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档