Pycharm:虚拟更改软件包名称

时间:2019-02-25 08:33:17

标签: python pycharm python-import pythonpath

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

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

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

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

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

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

我仅使用python 3.5+(如果重要)。

1 个答案:

答案 0 :(得分:1)

为了使python 您的IDE都能正确解析您的导入,您需要创建一个名为mypkg的目录,其中包含{{1} }和module1。我可以想到两种解决方法:

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

除了在安装过程中创建module2目录外,在mypkg目录内有一个真实的mypkg目录:

src

(请注意:您的测试可能不应该在软件包中 。您不希望将其运输或让用户导入,对吗?)

2。解决方法:符号链接

在PYTHONPATH上的某个位置创建一个|-src | |- mypkg | | |- module1 | | | |- tests | | |- module2 | | | |- tests |- ... 目录。然后创建到mypkgmodule1的符号链接。 (How to create symlinks on WindowsHow to create symlinks on Linux

在您的项目目录中:

module2

PYTHONPATH上的某处:

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