重新安装virtualenv后,虚拟环境未激活

时间:2017-01-12 08:36:44

标签: python virtualenv

以前我的系统上安装了虚拟环境。我为我正在研究的两个不同的项目创建了两个不同的VirtualEnv 我用它来激活其中一个虚拟环境并开始处理项目 最近我的系统损坏了,我在复制所有项目和虚拟环境后升级了操作系统。我将项目文件和虚拟环境复制回我的系统并安装了虚拟环境。

设置PYTHONHOME =' / usr / lib / python3'在.bashrc中

现在,当我激活其中一个复制环境并尝试运行python manage.py runserver时,我收到以下错误

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Aborted (core dumped)

在此虚拟环境中运行pip会引发相同的错误。

请建议我需要的东西,以便我的项目能像以前一样工作。

3 个答案:

答案 0 :(得分:1)

不建议移动虚拟环境,即移动到新系统或不同的操作系统安装 - A SO answer

良好的做法是生成需求列表(已安装的Python包) - 在虚拟环境处于活动状态时,执行:

$(venv)  pip freeze > requirements_venv.txt

在新安装上(如果有的话删除复制的venv),使用Python 3设置一个全新的虚拟环境,激活它,然后安装python包:

$ virtualenv -p /usr/bin/python3 venv/
$ source env/bin/activate
$ pip install -r requirements_venv.txt

可能的问题

Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Aborted (core dumped)

状态,系统的Python 3正在尝试加载为其他Python版本编写的内容,即Python 2.x

您获得错误的最可能原因可能是

  • 使用不同的python版本创建虚拟环境。
  • 不当PYTHONPATH
  • 设置PYTHONPATH
  • 后未重新启动终端

<强>解决方案/方法-退出:

首先检查您是否能够进入Python shell,即在终端中执行pythonpython3命令。 如果没有,请取消设置PYTHONPATH中的.bashrc,并在终端中执行以下命令(或系统上的确切路径):

# export PYTHONHOME=/usr/local/lib/python3.5/
# export PYTHONPATH=/usr/local/lib/python3.5

现在再次尝试启动Python shell,即在终端中执行pythonpython3命令,你必须得到类似下面的内容:

Python 3.5.2 (default, Jul 17 2016, 00:00:00) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

在Python shell工作的情况下,很可能您可能不会遇到已发布的问题 - 如果您这样做,请删除复制的虚拟环境并安装新的环境(如上所述)。

答案 1 :(得分:0)

是否正确安装了python?

在cmd中运行python并检查路径

如果某些依赖项被破坏,请尝试正确重新安装

sudo apt-get install --reinstall python2.7

sudo apt-get update

现在尝试使用virtualenv

pip install virtualenv <name>
 or 
pip install virtualenv .

按源./bin/activate

激活它

答案 2 :(得分:0)

虚拟环境使用一些符号链接返回源python安装,以便共享资源和二进制文件。我认为您应该能够将虚拟环境移动到新的/不同的系统并使其开箱即用,这是非常值得怀疑的。