我有一个python项目,其源代码树如下:
|-src
| |- module1
| | |- tests
| |- module2
| | |- tests
|- ...
它将以软件包mypkg
的形式部署到docker,这是我无法更改的方式-透明地添加mypkg
文件夹和__init__.py
。
在我的代码内部,我通常使用import mypkg.module1
或from 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+(如果重要)。
答案 0 :(得分:1)
为了使python 和您的IDE都能正确解析您的导入,您将需要创建一个名为mypkg
的目录,其中包含{{1} }和module1
。我可以想到两种解决方法:
除了在安装过程中创建module2
目录外,在mypkg
目录内有一个真实的mypkg
目录:
src
(请注意:您的测试可能不应该在软件包中 。您不希望将其运输或让用户导入,对吗?)
在PYTHONPATH上的某个位置创建一个|-src
| |- mypkg
| | |- module1
| | | |- tests
| | |- module2
| | | |- tests
|- ...
目录。然后创建到mypkg
和module1
的符号链接。 (How to create symlinks on Windows,How to create symlinks on Linux)
在您的项目目录中:
module2
PYTHONPATH上的某处:
|-src
| |- module1
| | |- tests
| |- module2
| | |- tests
|- ...