python - Pycharm:虚拟更改包的名称
问题描述
我有一个 python 项目,其源代码树如下:
|-src
| |- module1
| | |- tests
| |- module2
| | |- tests
|- ...
它将作为包部署到 docker mypkg
,以我无法更改的方式 - 透明地添加mypkg
文件夹和__init__.py
.
在我的代码中,我通常使用import mypkg.module1
or导入东西from mypkg.module2 import xyz
。但是,由于 下没有mypkg
文件夹(和__init__.py
)src
,pycharm 无法识别这些导入并报告Unresolved reference
错误,并且无法针对任何测试运行 pytest(即使它们不依赖于仅在 docker 中可用的任何资源)。
现在对于测试,我将测试中的导入从 更改import mypkg.module1
为import module1
,在 pycharm 中运行测试,修复错误,将其改回并提交。但正如您可以想象的那样,这很容易出错并且很烦人。
有什么办法可以告诉 pycharm 或 python 环境(也许$PYTHONPATH
可以识别我的包mypkg
并采取相应的行动?
我正在使用python 3.5+,专门(如果重要的话)。
解决方案
为了让 python和您的 IDE 正确解析您的导入,您需要创建一个名为的目录mypkg
,其中包含module1
和module2
. 我可以想到两种方法来解决这个问题:
1.正确的解决方案:修复项目结构和安装
不要mypkg
在安装过程中创建目录,而是mypkg
在您的目录中有一个真实的src
目录:
|-src
| |- mypkg
| | |- module1
| | | |- tests
| | |- module2
| | | |- tests
|- ...
(旁注:您的测试可能不应该在您的包中。您不想运送这些,或者让用户导入它们,对吗?)
2. 解决方法:符号链接
mypkg
在 PYTHONPATH 的某处创建一个目录。然后创建指向module1
和的符号链接module2
。(如何在 Windows 上创建符号链接,如何在 Linux 上创建符号链接)
在您的项目目录中:
|-src
| |- module1
| | |- tests
| |- module2
| | |- tests
|- ...
在你的 PYTHONPATH 的某个地方:
|- mypkg
| |- module1 -> path_to_your_project/src/module1
| |- module2 -> path_to_your_project/src/module2
推荐阅读
- python - 在 Python 中通过嵌套的 Json/dict 解析
- php - 无法使用 Mssql Pconnect 连接
- python - binance.exceptions.BinanceAPIException: APIError(code=-1013): Filter failure: LOT_SIZE
- javascript - IE11:如何在 Internet Explorer 中的 React 中填充 `Array.values().next()`?
- numbers - 替换文件名中的 2 数字以在 python 中获得正确的格式
- datagrip - Datagrip - 单击左侧面板中的模式名称时不显示表名称
- android - 跨平台的 Firebase 有效负载 json 不起作用
- javascript - 如何在 RMarkdown 的代码块中使用 JavaScript?
- identity - dbt - 如何让创建表创建一个自动增量列
- scala - 凿子将枚举类型作为 IO 传递