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

virtual environment is not activating after re-installation of virtualenv

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

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

现在,当我激活其中一个复制的环境并尝试 运行 python manage.py 运行 服务器时,出现以下错误

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 抛出同样的错误。

请建议我需要什么,以便我的项目可以像以前一样工作。

python是否安装正确?

运行 python in cmd 并检查路径

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

sudo apt-get install --reinstall python2.7

sudo apt-get update

现在尝试使用 virtualenv

pip install virtualenv <name>
 or 
pip install virtualenv .

按来源激活它。/bin/activate

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

不建议移动虚拟环境,即移动到新系统或不同的 OS 安装 - 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

Solution/way-out:

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

# 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 工作的情况下,很可能您可能不会遇到已发布的问题 - 如果遇到,请删除复制的虚拟环境并安装新的(如顶部所述)。