重新安装操作系统后,使用virtualenv在PyCharm项目中"无法设置Python SDK"

el_*_*_le 25 python virtualenv pycharm

我重新安装了Windows并打开了现有的Pycharm项目,并在Settings> Project Interpreter中收到错误'SDK似乎无效'.

项目解释器路径指向venv中的python:

MyProject\venv\Scripts\python.exe
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我尝试重新添加python.exe:

在此输入图像描述

多数民众赞成收到错误:

在此输入图像描述

更新:这是idea.log中的错误,虚拟环境的许多其他问题似乎与Windows环境变量和系统路径有关:

2018-09-28 19:50:40,275 [  17601]   INFO - hon.packaging.PyPIPackageCache - Loaded 153296 packages from C:\Users\Matt\.PyCharm2018.2\system\python_packages\pypi-cache.json 
2018-09-28 19:50:40,816 [  18142]   INFO - rains.python.sdk.PythonSdkType - Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00000fa8 (most recent call first):

Exit code -1073740791 
2018-09-28 19:50:40,816 [  18142]  ERROR - ns.python.sdk.PythonSdkUpdater - Failed to determine Python's sys.path value:
STDOUT: 
STDERR: Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00000fa8 (most recent call first):

com.jetbrains.python.sdk.InvalidSdkException: Failed to determine Python's sys.path value:
STDOUT: 
STDERR: Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'
Run Code Online (Sandbox Code Playgroud)

pch*_*pch 16

什么解决方案是:检查venv\pyvenv.cfg并提供基本python安装的有效路径。

最有可能发生的情况: 重新安装操作系统后,您没有重新安装基本的Python 解释器,或者您已将其安装在与以前不同的位置。因此您的虚拟环境无法找到 python 安装。虚拟环境意味着所有库和设置都与其他项目隔离。它提供隔离的 python 安装。您仍然需要用于创建 venv 的基础 Python。

我的情况:我在网络共享中有一个项目,并尝试从不同的计算机访问它。基本的python 路径取决于PC。上面的解决方案对我来说很好。不幸的是,我需要pyvenv.cfg根据使用的 PC进行更新。

PS我相信有一个环境变量可以覆盖 venv 配置值。我只尝试set PYTHONPATH=C:\Anaconda3\envs\python37在 Windows 上然后激活 venv。它没有效果,我放弃了。


sil*_*oxA 15

当我遇到完全相同的问题时,这是解决我的问题的方法

导航到Project Interpreter选择框右侧的 ,单击齿轮图标,它将显示两个选项添加和显示全部。

单击全部显示,如果您从同一目录中看到以前的存在,请删除它。单击添加或+签名以添加新的解释器并导航到您的project path,向下导航到虚拟环境目录。

venv/bin/{选择带有版本代码的python可执行文件,即如果您使用的是python3.6,请选择python3.6}

选择后,您现在可以单击通知install packaging tools,点击应用并完成。

在此处输入图片说明

  • 就我而言,我从“显示全部”视图中删除了“[无效] python 解释器”,删除了 venv 文件夹,并使用新解释器再次创建了 venv (3认同)

iva*_*eev 7

最有可能的是,PyCharm 尝试使用的 Python 环境的某些路径在某处变得无效。有(至少)两个主要嫌疑人:

PyCharm 设置中 virtualenv 的路径

PyCharm 需要知道环境的路径才能在其中运行东西。因此,如果该路径发生更改,PyCharm 保存的路径将失效。

转到您的项目的解释器设置File->Settings...->Project interpreter->(Gear icon)->Show all...

设置

然后删除并重新创建必要的条目。或者编辑它们并指定正确的路径。例如,这是我删除 Anaconda 安装后列表的样子:

解释器设置

virtualenv 中到其基本安装的路径

由于 virtualenv 不是完整安装,它必须有一个指向其基本安装的路径存储在某个地方,以便能够使用那里的文件。

在撰写本文时,Windows 中的virtualenv( v16.0.0) 是这样实现的:

  • realpython.exe和其他几个文件被复制到 virtualenv 的子树中
  • 在 中Lib\orig-prefix.txt,存储了基本安装的路径。它用于基础设施的添加Libsys.path通过自定义site.py

因此,如果该文件中的路径无效,virtualenv 的 Python 解释器将无法找到任何标准模块,除了那些被复制的少数模块。这完全符合你的症状。