我在我的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的大小。
如何:
我遇到了同样的问题,我设法“修复”是通过重新创建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中来修复它。