同时在多个项目中更新 Python 解释器

Updating Python interpreter in multiple projects at the same time

使用 PyCharm,可以在同一个 window / 环境中拥有多个项目。每个项目在 Project > Python Interpreter 部分都有自己的解释器配置。

有没有一种简单的方法可以同时将所有项目切换到同一个解释器?状态栏中的“快速切换器”仅更新被认为是“当前项目”(包含当前或最后打开的文件的项目)。切换到单个项目和多个内容根不是一种选择,因为它会导致多个项目解决的各种其他问题。

问题中描述的情况是在同一个 window 中打开多个项目。如 Managing multiple projects - PyCharm documentation.

中所述

UI 目前不提供同时更改在同一项目 window 中打开的多个项目的解释器的功能。所以剩下的唯一选择(除了在 Settings > Project Interpreter UI 对话框中为每个项目单独选择解释器之外)是编辑 IDE 项目配置文件。

每个项目的解释器都硬编码在每个项目的 .idea 文件夹中的 .iml 文件中,例如(为了便于阅读截断了一些不相关的行):

project_folder\.idea\your_project_name.iml

<module type="PYTHON_MODULE" version="4">
  <component name="NewModuleRootManager">
    <orderEntry type="jdk" jdkName="Python 3.8 (venv38)" jdkType="Python SDK" />
  </component>
</module>

注意元素<orderEntry>中的属性type="jdk"" jdkName="Python 3.8 (venv38)"等,定义项目设置使用的解释器。通过在单个 .iml 文件中更改此行,您正在设置该项目的解释器。

Python Interpreters in Settings > Project Interpreter 的列表,如果你按下 cog 和 Show All...,就会填充(在 Windows) 从文件 C:\Users\your_user\AppData\Roaming\JetBrains\PyCharm2020.version\options\jdk.table.xml 那里你会找到对应于你过去添加的每个解释器的 XML 元素,例如(为了易读性而截断了一些不相关的行):

<application>
  <component name="ProjectJdkTable">
    <jdk version="2">
      <name value="Python 3.8 (venv38)" />
      <type value="Python SDK" />
      <version value="Python 3.8.0" />
      <homePath value="C:\path_to_venv38\Scripts\python.exe" />
    </jdk>
</component>
</application>

最后,为了同时更改在 IDE 的项目视图中打开的所有项目的解释器,您可以定义一个 custom scope 并在 Edit > Find > Replace in Files(或 Ctrl + Shift + R)限制对打开项目的 .idea\your_project_name.iml 文件的更改。

如果您已经为所有项目设置了一次相同的解释器,那么进行更改将变得特别容易。在上面的示例中,将 <orderEntry type="jdk" jdkName="Python 3.8 (venv38)" jdkType="Python SDK" /> 行替换为定义的自定义范围内的新解释器的行将一键更改。