【问题标题】:How to correctly import from Git submodules for PyInstaller built applications?如何从 Git 子模块中正确导入 PyInstaller 构建的应用程序?
【发布时间】:2020-06-25 15:45:24
【问题描述】:

我不是 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 imports from Git Submodule),但是当我在 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 模块/打包缺乏了解,但如果有人对如何以最佳方式组织这个项目有建议,那将非常有帮助。

提前致谢:)

【问题讨论】:

    标签: python pycharm pyinstaller git-submodules


    【解决方案1】:

    在 PyCharm 中,您可以右键单击您的模块 A,然后单击 "Mark Directory as" => "Source Root"

    但我不确定这是否会在您创建可执行文件后起作用。 这个问题有多个问题,我自己也在与这个问题作斗争。 如果您在导入之前将 moduleA 添加到 /my_app_module 内的 python 路径中,也许会有所帮助:

    import sys
    sys.path.append("moduleA")
    from subModuleA1 import abc
    

    有关更多信息,请参阅此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-27
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多