python - 如何从 Git 子模块中正确导入 PyInstaller 构建的应用程序?
问题描述
我不是 Python 打包/构建专家,但试图为我编写的应用程序生成可执行文件(针对 Windows 可执行文件)。做了一些研究,发现 PyInstaller 对我的一个小项目非常有用,因为它基本上包括一个外部“cli.py”脚本和一个“setup.py”,并在该目录上运行 pyinstall 来解决问题。
结果表明,现在我必须为更“复杂的结构化项目”做同样的事情。该项目使用 git-submodule 指向另一个 repo(Python 模块),我不应该更改该文件夹代码。结构如下:
/my_app
|__ /moduleA (git_submodule)
| |
| |__/subModuleA1
| | |__ __init__.py
| | |__ <bunch of py scrips>
| |
| |__ __init__.py
| |__ scriptA.py
|
|__ /my_app_module
| |
| |__ __init__.py
| |__ <couple of py scripts that imports moduleA stuff and should be made an executable app>
|
|__ cli.py (call a main from my_app_module)
|__ setup.py (point to a main from my_app_module)
我的问题:不确定这里是否是 PyCharm 问题(Pycharm 从 Git 子模块导入),但是当我在 PyCharm 中将这个“my_app”文件夹作为项目打开时,它需要我更新该 git-submodule 的所有内部导入. 例如:
- scriptA.py 从 subModuleA1 导入一些东西,例如:
from subModuleA1 import abc
- 现在包含子模块,我必须将其更新为
from moduleA.subModuleA1 import abc
我只是想导入一些“moduleA”的东西在“my_app_module”中使用
问题是我必须更改另一个 repo 代码,这样 PyCharm 才不会抱怨我的导入,但我不应该更改该子模块内部代码来使用它,对吧?
不确定它是否是 PyCharm 的东西,或者我对 Python 模块/打包缺乏了解,但如果有人对如何以最佳方式组织这个项目有建议,那将会很有帮助。
提前致谢 :)
解决方案
在 PyCharm 中,您可以右键单击您的 moduleA 并单击"Mark Directory as" => "Source Root"。
但我不确定这是否会在您创建可执行文件后起作用。这个问题有多个问题,我自己也在与这个问题作斗争。如果您在导入之前将 moduleA 添加到 /my_app_module 内的 python 路径中,也许会有所帮助:
import sys
sys.path.append("moduleA")
from subModuleA1 import abc
有关更多信息,请参阅此问题。
推荐阅读
- java - 在 JSP 上提交给出了一个空白页面并且不加载它
- python - 具有与打印功能类似的签名的格式化功能
- javascript - 屏幕尺寸较小时缺少项目
- php - 尝试使用 PHP 插入值时出现错误
- location - geolocation.watchPosition() 在 Ionic 4 中不起作用
- typescript - 我可以在企业项目中使用实验装饰器吗?
- php - Laravel MySQL 选择有限制
- java - 在所有活动中存储和访问变量的最佳方式是什么
- javascript - 如何限制使用 API 令牌执行的操作
- c# - 安全的自托管 WCF 服务:从文件加载证书