【问题标题】:Pycharm: virtually change name of packagePycharm:虚拟更改包的名称
【发布时间】:2019-07-18 14:56:16
【问题描述】:

我有一个 python 项目,其源代码树如下:

|-src
|  |- module1
|  |  |- tests
|  |- module2
|  |  |- tests
|- ...

它将以包mypkg 的形式部署到docker,以我无法更改的方式——透明地添加mypkg 文件夹和__init__.py

在我的代码中,我通常使用import mypkg.module1from mypkg.module2 import xyz 导入内容。但是,由于src 下没有mypkg 文件夹(和__init__.py),pycharm 无法识别这些导入并报告Unresolved reference 错误,并且无法针对任何测试运行pytest(即使它们不是依赖于仅在 docker 中可用的任何资源)。

现在对于测试,我将测试中的导入从 import mypkg.module1 更改为 import module1,在 pycharm 中运行测试,修复错误,将其改回并提交。但正如您可以想象的那样,这很容易出错并且很烦人。

有什么方法可以告诉 pycharm 或 python 环境(也许$PYTHONPATH 将我的包识别为mypkg 并采取相应的行动?

我正在使用 python 3.5+,专门(如果重要的话)。

【问题讨论】:

  • 那么,您的项目结构与安装包的方式不匹配是否有原因?为什么在安装过程中会创建mypkg 父包? 当然这会导致问题。那是谁的主意?
  • 不是我的:)——但我必须忍受它。

标签: python pycharm python-import pythonpath


【解决方案1】:

为了让python你的IDE都能正确解析你的导入,你需要创建一个名为mypkg的目录,其中包含module1和@987654325 @。我可以想到两种方法来解决这个问题:

1。正确的解决方案:修复项目结构和安装

不要在安装过程中创建mypkg 目录,而是在您的src 目录中拥有一个真正的mypkg 目录:

|-src
|  |- mypkg
|  |  |- module1
|  |  |  |- tests
|  |  |- module2
|  |  |  |- tests
|- ...

(旁注:您的测试可能不应该您的包中。您不想运送这些,或者让用户导入它们,对吗?)

2。解决方法:符号链接

在 PYTHONPATH 的某处创建一个 mypkg 目录。然后创建指向module1module2 的符号链接。 (How to create symlinks on Windows, How to create symlinks on Linux)

在您的项目目录中:

|-src
|  |- module1
|  |  |- tests
|  |- module2
|  |  |- tests
|- ...

在你的 PYTHONPATH 上的某个地方:

|- mypkg
|  |- module1 -> path_to_your_project/src/module1
|  |- module2 -> path_to_your_project/src/module2

【讨论】:

    猜你喜欢
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 2016-08-16
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多