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

问题描述 投票:23回答:3

我重新安装了Windows并打开了一个现有的Pycharm项目,并在“设置”>“项目解释器”中得到错误“ SDK似乎无效”。

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

MyProject\venv\Scripts\python.exe

enter image description here

我尝试重新添加python.exe:

enter image description here

那就是我得到的错误:

enter image description here

更新:这是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'
python pycharm virtualenv
3个回答
4
投票

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

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

单击全部显示,如果您从同一目录中看到先前的存在,则将其删除。单击添加或+符号以添加新的解释器,然后导航到您的project path,向下导航到虚拟环境目录。

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

一旦选择,您现在可以单击显示install packaging tools的通知,点击“应用并完成”。

enter image description here


1
投票

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

PyCharm设置中您的virtualenv的路径

PyCharm需要了解环境的运行路径。因此,如果该路径更改了,PyCharm的保存路径将变得无效。

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

settings

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

interpreter settings

virtualenv中基本安装的路径

由于virtualenv不是完整安装,因此它必须具有存放其基本安装的路径,以便可以从那里使用文件。

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

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

因此,如果该文件中的路径无效,那么virtualenv的Python解释器将无法找到任何标准模块,只有那些被复制的模块除外。完全适合您的症状。


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.