【发布时间】:2018-05-18 13:49:53
【问题描述】:
我有一个包含多个 Python 模块的项目,每个模块都有自己的虚拟环境。
项目结构:
data-reader (Python module)
data_reader
reader.py
venv (virtual environment directory for data-reader)
requirements.txt
data-writer (Python module)
data_writer
writer.py
venv (virtual environment directory for data-writer)
requirements.txt
commons (Python module)
commons
utils.py
venv (virtual environment directory for commons)
requirements.txt
setup.py
我想将commons 作为两个模块的依赖项安装:data-reader 和data-writer,最好作为可编辑的项目依赖项。
我在 commons 中创建了 setup.py,并在两个模块中的 requirements.txt 中添加了以下要求:
-e commons
当我为其中一个模块激活虚拟环境并安装其要求时,我可以使用终端在 Python 解释器中从 commons 运行脚本,这是预期和期望的结果,但在 Intellij IDEA IDE 中,我收到一个错误,在 import 语句下划线,并带有以下错误消息:Unresolved reference 'commons'
from commons import utils
我不知道这是IDEA 还是我使用的方法的问题。
- 添加和管理此类依赖项的推荐方法是什么?
- 首先将此依赖项添加为可编辑项目是一个好主意,还是有其他推荐的方法?
【问题讨论】:
-
IDE 显示什么错误信息?
-
你的方法很好,没有严重的问题。当你的产品代码库增长时,你总是会得到类似的东西。
-
我已编辑问题以包含错误消息,即
Unresolved reference 'commons' -
可行的解决方案,但很难维护:当您更改公共资源时,使用 setup.py 创建一个 sdist 版本,然后在其他模块中使用 pip 安装该版本。
-
实际上,一个人编写的小项目使用许多包是一种巨大的矫枉过正。随着项目的增长,它被拆分成这样的包,每个包都是独立开发的,并且有自己的 vcs 存储库
标签: python virtualenv