在较大的 PyCharm 或 IntelliJ 项目中是否支持具有自己的 virtualenv 的子目录?

And*_*ire 6 python pycharm intellij-14

我一直在使用 IntelliJ 作为我的 IDE 来组合包含自己的基础设施/部署代码的应用程序。签入 Git 的整个项目包括几个独立的 python 脚本,这些脚本包含在我的项目下的子目录中(包括它们的包信息和支持 python 文件)。我的 IAC/部署代码负责确保这些脚本在部署到的基础设施上时具有包含所需包的 virtualenv。所有这些都工作正常,除了当我尝试让 IntelliJ 了解 python 子目录环境时。

当我将整个项目树作为 IntelliJ 项目打开时,似乎无法向 IntelliJ 解释某些子目录应该被视为自己的 python 项目,这样它们就可以拥有自己的 virtualenv、包和了解基本导入目录。由于 IntelliJ 不理解这些事情,它认为我在这些脚本中的导入已损坏,并且我无法在代码等中跳转。

作为一种解决方案,我有时只是将 python 子目录作为自己的 IntelliJ 项目打开,以便 IntelliJ 可以理解它们。但这并不理想,因为我必须为同一个较大的项目拥有多个不同的 IntelliJ 实例。

所以现在也许我的问题更有意义,我会重申一下。我是否缺少某种方式让 IntelliJ 的一个实例正确理解整个项目,包括一些子目录就像带有自己的虚拟环境和包等的 python 子项目?

Ste*_*eve 5

PyCharm/IntelliJ“项目”可以有“子项目”。您可以通过将一个项目“附加”到另一个项目来访问此功能。打开一个项目。然后打开第二个项目。您将看到一个对话框,询问您希望如何打开该项目,其中一个选项是“附加”。如果选择此选项,第二个项目将添加到已打开的窗口中,并且您的窗口现在包含两个有些独立的项目。

如果您现在打开“首选项”面板,并选择“项目:xxx -> 项目解释器”,您应该看到面板中央部分列出了两个项目。您可以选择其中每一个并独立配置每个项目的解释器/环境设置。您还可以以相同的方式独立设置每个子项目的项目结构和项目依赖关系。我相信,这就是您所问的如何做。

为了说明这一点,下面的屏幕截图显示了它的样子,其中三个项目在单个窗口/主项目中进行管理:

PyCharm 首选项面板

根据上面屏幕截图中的“项目:if-lab”部分标题,PyCharm/IntelliJ 似乎有一个概念,即其中一个项目是主项目。您可以在“首选项”窗格中看到这一点,其中每个项目的设置列在“项目:xxx”等标题下,其中“xxx”是主项目的名称。我不确定一个项目作为主要项目的概念是如何发挥作用的。

这是 PyCharm 文档中的一个页面,解释了其中的一些内容:

https://www.jetbrains.com/help/pycharm/opening-multiple-projects.html

该页面的以下部分解释了子项目如何与主项目交互:

新打开的项目与已打开的项目共享同一窗口。已打开的项目被视为主项目,并且始终首先显示在“项目”工具窗口中。所有其他项目都添加到主项目中。

您可以从依赖项目导入类和方法。使用依赖项项目设置来配置此行为。

可以为每个项目单独配置一些设置(例如 Django、Buildout、Google App Engine、模板语言、Python 解释器、内容根)。

您还可以通过创建多个运行/调试配置来配置独立于项目环境的不同执行环境。这些设置控制执行时发生的情况,但不会影响语法检查和突出显示、代码完成等。