【问题标题】:How do I reroute a project to another Python version in PyCharm? (Error: No Python at 'C:\Users\...\python.exe')如何在 PyCharm 中将项目重新路由到另一个 Python 版本? (错误:'C:\Users\...\python.exe' 中没有 Python)
【发布时间】:2020-10-11 00:47:24
【问题描述】:

我想用 64 位版本替换 Python 3.8 32 位来安装 face_recognition 模块,所以我删除了以前的版本并尝试通过转到文件 > 设置 > 将项目重新路由到新的 Python 版本Project Interpreter > Show all > Show Paths for Selected Interpreter,并从新文件夹中添加所有 Python 文件并删除旧文件。

但是,当我尝试安装模块时,它仍然向我显示此错误:

(Will2.0) C:\Users\solei\PycharmProjects\Will>pip install face_recognition
No Python at 'C:\Users\solei\AppData\Local\Programs\Python\Python38-32\python.exe'

我还尝试转到 Windows 系统属性并更改那里显示“Python38-32”的所有内容,但它仍然无法正常工作。 不过,当我创建一个新环境时它确实可以工作,所以至少我知道 Python 安装正确。只是这个环境让我感到困惑(顺便说一句,我不想​​为此创建一个新项目。我已经在其中安装了很多模块。)。

【问题讨论】:

  • 当您尝试在终端中安装带有 PIP 的模块时,您必须激活 venv 否则您将安装到解释器(可能会解析到不同的站点包位置)。考虑this thread。完整的解释有些复杂,见PEP 250PEP 370

标签: python path pycharm


【解决方案1】:

您选择的解释器不是您已替换为 64 位版本的系统解释器,而是您项目的 virtual environment interpreter。虚拟环境的文件在该过程中未更改,需要更新才能再次使用该环境。

  • 系统解释器是使用安装可执行文件安装的 Python 解释器。在您的情况下,它位于C:\Users\solei\AppData\Local\Programs\Python\Python38\。您可以安装多个系统解释器,例如并排安装 Python 2.7、Python 3.7 和 Python 3.8。

  • 虚拟环境解释器是使用 Python 标准库中的 venv 包创建的另一个解释器的副本。系统中可以有许多虚拟环境解释器(例如,每个项目一个或多个)

  • 基本解释器是用作venv 包模板的解释器。每个虚拟环境解释器都有其运行所需的基本解释器(通常是系统解释器)。更改或升级基本解释器需要更新虚拟环境。

如果我们快速查看documentation,虚拟环境被描述为

一个自包含的目录树,其中包含特定 Python 版本的 Python 安装,以及许多附加包。

这意味着您可以为每个项目设置一个单独的环境,其中包含自己的包。环境是管理项目包的一种非常有效的方式,这就是为什么 PyCharm 建议默认在系统解释器上创建这样的环境。 简而言之,它允许您拥有同一个包的两个不同版本被两个不同的项目使用,包没有相互冲突。

这也解释了为什么您的虚拟环境文件不受升级影响。


现在,很遗憾我不是 Python 专家。我不得不花一些时间研究 Python 如何处理 Windows 和 Ubuntu 上的虚拟环境。似乎环境总是需要系统中存在的基本系统解释器。如果您删除或更改基本解释器的位置,环境将无法运行。

正如我在编辑此答案之前提到的,理论上您可以简单地编辑位于虚拟环境根文件夹中的 pyenv.cfg 文件。实际上,这只适用于简单的情况,这不是更新虚拟环境的预期方式。

您需要升级虚拟环境的文件以使用新的系统解释器。这可能意味着 64 位版本优于 32 位版本,甚至是 Python 的更新版本——比如我们从 3.7 升级到 3.8。

  1. 关闭 PyCharm

  2. 检查您要升级到的系统解释器是否在系统路径上

    你可以通过运行快速检查

    python -c "import platform; print(platform.architecture())"
    

    对你来说,输出应该是这样的

    ('64bit', 'WindowsPE')
    

    如果您的输出不同,您需要在步骤 4) 中为 Python 可执行文件的绝对路径添加前缀。

  3. 导航到虚拟环境的目录

    您要查找的目录包含IncludeLibScripts 目录以及pyenv.cfg 文件。从你的截图来看,这个目录似乎是你项目的根目录,所以在你的情况下:

    cd C:\Users\solei\PycharmProjects\Will2.0\
    
  4. 升级虚拟环境

    python -m venv --upgrade .
    

    ...或者如果 Python 不在你的路径上

    C:\Users\solei\AppData\Local\Programs\Python\Python38\python.exe -m venv --upgrade .
    

    命令中的.指的是当前目录。

  5. 打开 PyCharm 并验证您的环境是否正常工作

    ... 或者干脆尝试直接从命令行运行pip。请注意,您首先需要通过运行Scripts\activate.bat 批处理文件来activate the virtual environment


如果上述方法不起作用,您可能需要创建一个新的虚拟环境。您可以轻松创建一个,而无需创建新的 PyCharm 项目。请参阅此PyCharm documentation 以供参考。但是,您仍然需要重新下载所有必需的软件包。

为简单起见,我建议在位于项目根目录的.venv 文件夹中创建新的虚拟环境。

免责声明

我仅在 Windows 沙盒内的全新 Windows 安装中单独测试了 Python 的行为。我能够安装 32 位 Python,创建虚拟环境,将 Python 替换为 64 位版本并升级虚拟环境以使其再次正确启动。

【讨论】:

  • 很好的答案!虽然我有点困惑,但我应该如何在项目的根目录中运行python -m venv .?我尝试打开命令提示符并使用cd C:\Users\solei\PycharmProjects\Will\venv 运行它,但什么也没发生。抱歉,如果这是一个明显的问题,顺便说一句,我还是个初学者,哈哈。
  • 如果您只是在谈论编辑pyenv.cfg 文件,我设法用记事本做到了,但它仍然没有解决我的错误。
  • @Cortisol 我很抱歉不清楚 - python -m venv {directory} 在指定目录中创建一个新的虚拟环境。我只是想说明您的设置有点不寻常,但可能。您不必担心命令本身,因为 PyCharm 会为您管理虚拟环境的创建。
  • @Cortisol 经过一番研究,我找到了更新虚拟环境的预期方法。我已经更新了答案,希望它现在包含您问题的解决方案。如果我的建议仍然不适合您,请务必再次回复。
  • 哦,谢谢大家的帮助!!虽然我刚刚为解决我的问题的项目创建了一个新环境。
猜你喜欢
  • 2021-02-22
  • 1970-01-01
  • 2020-06-15
  • 2020-05-19
  • 2021-10-30
  • 2019-11-05
  • 1970-01-01
  • 2022-11-15
  • 2018-09-24
相关资源
最近更新 更多