多个Python模块之间的依赖关系管理

时间:2018-05-18 13:49:54

标签: python virtualenv

我有一个包含多个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-readerdata-writer,最好是可编辑的项目依赖项。

我在公共区域创建了setup.py,并在以下两个模块中向requirements.txt添加了以下要求:

-e commons

当我激活其中一个模块的虚拟环境并安装其要求时,我可以使用终端在Python解释器中运行来自commons的脚本,这是期望和期望的结果,但在{{1 IDE,我收到一个错误,强调了import语句,并显示以下错误消息:Intellij IDEA

Unresolved reference 'commons'

我不知道from commons import utils 或我正在使用的方法中是否存在问题。

  • 添加和管理此类依赖项的推荐方法是什么?
  • 将此依赖项添加为可编辑项目首先是一个好主意还是有其他推荐方法?

2 个答案:

答案 0 :(得分:0)

问题似乎与Intellij / Pycharm有关。

您应该选择Pycharm使用的解释器以匹配虚拟环境之一。

如果不这样做,Pycharm将使用默认的python解释器,其中未安装要导入的库。

您可以使用settings -> preference -> Project Interpreter (in the left menu bar)进行选择。 然后为其中的三个添加本地virtualenv到特定的python项目。

如果有帮助,则官方文档为:

https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html

答案 1 :(得分:0)

一段时间以来,我正在为其他读者发布答案。事实证明,这种方法对我们很有益,并且到目前为止效果很好。

问题出在IntelliJ / PyCharm,事实证明这是一个非常古老的问题,仍未正确解决:https://youtrack.jetbrains.com/issue/PY-976。问题本身中报告了一些解决方法。我个人还没有尝试过所有方法,但是到目前为止我没有尝试过。

此处提供另一个线程:PyCharm does not recognize modules installed in development mode