在ubuntu 15.10升级到16.04后,virtualenv python坏了

我在我的virtualenv python 3.4,但升级到16.04后,python升级到3.5,所以python在virtualenv与这些错误崩溃:

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' Current thread 0x00007f2f2dbcb700 (most recent call first): fish: “python” terminated by signal SIGABRT (Abort) 

我该如何解决它?

我通过安装最小工作python3.4来解决这个问题,以便我的virtualenv能够很好地工作以获取软件包列表,然后用python3.5创建一个新的…如下所示:

获取python3.4最小包:

 wget http://launchpadlibrarian.net/221250032/python3.4-minimal_3.4.3-1ubuntu1~14.04.3_amd64.deb wget http://launchpadlibrarian.net/221250033/libpython3.4-minimal_3.4.3-1ubuntu1~14.04.3_amd64.deb sudo dpkg -i --force-breaks libpython3.4-minimal_3.4.3-1ubuntu1~14.04.3_amd64.deb sudo dpkg -i python3.4-minimal_3.4.3-1ubuntu1~14.04.3_amd64.deb 

我的virtualenv在这里:〜/ virtualenv / example

获取virtualenv中的软件包列表(现在应该可以正常工作,但是可能不能正确地执行其他操作):

 source ~/virtualenv/example/bin/activate pip freeze > /tmp/requirements.txt deactivate 

摆脱python3.4,回到Ubuntu 16.04的首选状态:

 sudo dpkg --purge python3.4-minimal sudo dpkg --force-depends --purge libpython3.4-minimal 

用正确的软件包制作一个新的virtualenv:

 virtualenv -p python3.5 example source ~/virtualenv/example/bin/activate pip install -r /tmp/requirements.txt 

这应该现在工作,与所有的旧包,但在python3.5。 应该…

参见在virtualenv中升级python

我有同样的问题,我解决了重建整个virtualenv

PS :抱歉我的英文不好。

我今天遇到了同样的问题,那就是我解决问题的方法:

问题:首先,据我所知,问题的发生是因为在升级到Ubuntu 16.04之后,以前的Python版本也升级了。 因此任何Python3环境中的符号链接都不能工作了。

解决方案1:如上所述,简单的解决方案是删除所有的Python3环境并重新创建它们。 我不喜欢它,因为这是升级Ubuntu后第二次。 也可能我需要在未来的项目中使用多个Python 3版本。

解决方案2:这是我今天所尝试的,它工作正常。 而不是使用virtualenv + virtualenvwrapper我决定尝试pyenv + pyenv-virtualenv组合。

两种方法的主要区别是:

Pyenv每次创建一个新的pyenv版本时都会复制整个Python安装。 相反,virtualenv使用符号链接来减小virtualenv的大小。

如何:

  1. 按照此处所述安装pyenv以及所需的Python 2和3版本。
  2. 在这里看看如何使用pyenv使用virtualenv。
  3. 创建新的环境,使用pip安装所有依赖关系,并希望在下次Ubuntu升级期间忘记符号链接错误的问题。

我遇到了同样的问题,我设法“修复”是通过重新创建virtualenv并使用pip重新安装所需的软件包。

创建一个新的virtualenv:

 virtualenv <new-virtualenv> 

激活它:

 source <new-virtualenv>/bin/activate 

安装软件包:

 pip install <required-packages> 

我很高兴再次去!

您可以通过重命名文件夹来保留旧的virtualenv:

 mv <old-virtualenv> <old-virtualenv>-backup 

我通过创建一个新的virtualenv并将python可执行文件复制到旧的破坏的virtualenv中来修复它。