当前位置: 首页>>技术教程>>正文


将ubuntu 15.10升级到16.04后,virtualenv python断开了

, ,

问题描述

我在virtualenv中安装了python 3.4,但是将ubuntu升级到16.04之后,python升级到了3.5,因此virtualenv中的python崩溃并出现以下错误:

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。应该…

另请参见Upgrade python in a virtualenv

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8425.html,未经允许,请勿转载。