當前位置: 首頁>>技術教程>>正文


將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/zh-tw/article/8425.html,未經允許,請勿轉載。