在一个更大的PyCharm或IntelliJ项目中,是否支持具有自己的VirtualNV的子目录?

2024-05-14 14:05:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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

当我以IntelliJ项目的形式打开整个项目树时,似乎无法向IntelliJ解释某些子目录应该被视为它们自己的python项目,这样它们就可以理解它们自己的virtualenv、packages和base import目录。由于IntelliJ不理解这些东西,它认为我在这些脚本中的导入被破坏了,我不能在代码中跳跃等等

作为一项工作,我有时只是打开python子目录作为自己的IntelliJ项目,以便IntelliJ能够理解它们。但这并不理想,因为对于同一个较大的项目,我必须有几个不同的IntelliJ实例

所以现在也许我的问题更有意义,我要重申一下。我是否缺少一个IntelliJ实例来正确理解整个项目,包括一些子目录类似于python子项目,有自己的虚拟环境和包等等


Tags: 文件项目实例代码git脚本信息应用程序
2条回答

我已经接受了@Steve给出的非常详细的答案,并且发现让我走上正轨非常有用。但对于我的特定IntelliJ版本(MacOS上的2020.1.2),我必须对其进行稍微不同的设置,因此我将我所做的作为备选答案:

请注意,对于我的IntelliJ版本和这种方法,充当python根目录的子目录不需要是项目本身,就像Steve的回答中那样

步骤1)为项目的子目录设置virtualenv,该子目录将用作python代码的根目录。我使用了python诗歌,无论您使用什么方法,请注意virualenv的python可执行文件的路径,因为您稍后需要在IntelliJ中输入它

步骤2)打开文件->;项目结构。一个窗口弹出(最终花了我30秒左右)

步骤3)在“项目结构”窗口左侧的面板上,选择“模块”

步骤4)A左侧第二列的顶部是+和复制图标。单击+图标。此时会出现一个下拉列表,您应该选择“导入模块”,从而出现另一个弹出窗口

步骤5)在弹出窗口中,导航到要用作python脚本根目录的项目子目录,并使用右下角的“打开”按钮选择它。弹出窗口消失,几秒钟后出现“导入模块”弹出窗口

步骤6)在“导入模块”窗口中选择“从现有源创建模块”,然后单击“下一步”按钮并按照类似向导的步骤操作,这将使您有机会指定在步骤1中设置的virtualenv路径

步骤7)单击导入模块窗口的“完成”,您应该进行设置

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

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

为了说明这一点,这里有一个屏幕截图,显示了这是什么样子,在一个窗口/主项目中管理三个项目:

PyCharm Preferences Panel

根据上面截图中的“项目:如果实验室”部分标题,PyCharm/IntelliJ似乎认为其中一个项目是主要项目。您可以在首选项窗格中看到这一点,其中每个项目的设置都列在“project:xxx”这样的标题下,其中“xxx”是主项目的名称。 我不确定一个项目作为主要项目的概念是如何发挥作用的

以下是PyCharm文档中的一页,解释了其中的一些内容:

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

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

A newly opened project shares the same window as the already opened one. The project that has already been opened, is considered the primary project, and is always shown first in the Project tool window. All the other projects are added to the primary project.

You can import classes and methods from dependent projects. Use the Dependencies project settings to configure this behavior.

Some settings (such as Django, Buildout, Google App Engine, template languages, Python interpreters, content roots) can be configured separately for each project.

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

相关问题 更多 >

    热门问题