2016-04-22 20 views
17

へのUbuntu 15.10をアップグレードした後破った私はvirtualenvの中でのpython 3.4を持っていたが、これらのエラーのvirtualenvのクラッシュで3.5にアップグレード16.04のpythonへのUbuntuをアップグレードした後ので、パイソン:virtualenvのパイソンは16.04

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) 

私はどのように修正することができますそれ?

+0

Python 3.5を再インストールしましたか? 'encodings'モジュールは基本インストールの一部です。 – mprat

答えて

4

私のvirtualenvのは、パッケージの一覧を取得するに十分働いていた、次のように... python3.5で新しいものを作ったように、私は、最小限の作業python3.4をインストールすることで、これを固定:

取得python3.4最小限のパッケージ:〜/ virtualenvの/例

今、このために十分に機能する必要があり、あなたのvirtualenvの中のパッケージ(のリストを取得しますが、実行しない場合があります。

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のはここにあります他のもの適切):

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

は、Ubuntuの16.04の優先状態に戻るには、python3.4を取り除く:

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 

これで、以前のすべてのパッケージで動作するはずですが、Python 3.5では動作します。 ...

Upgrade python in a virtualenv

1

私は同じ問題を持っていると私は全体virtualenvのに

PS再作成解か:私の悪い英語のため申し訳ありませんが。

+0

djangoプロジェクトを別のvirtualenvに移動して動作させるには? –

0

私は同じ問題を経験しました。私はvirtualenvを再作成し、pipを使って必要なパッケージを再インストールすることによって "修正"することができました。

新しいvirtualenvのを作成します。

pip install <required-packages> 

そして、私は再び行くことによかった:

source <new-virtualenv>/bin/activate 

は、パッケージをインストールします。

virtualenv <new-virtualenv> 

がそれを有効に!

あなただけのフォルダの名前を変更することにより、古いvirtualenvのを保つことができます。

mv <old-virtualenv> <old-virtualenv>-backup 
+0

壊れたvirtualenvからpipパッケージリストを抽出する方法はありますか? –

1

今日は同じ問題を抱えていたし、それは私がそれをいかに解決したかである:

問題:まず を、として私は、Ubuntu 16.04にアップグレードした後、以前のバージョンのPythonもアップグレードするため、問題が発生することを理解しています。その結果、Python3環境内のシンボリックリンクはもう働きません。

解決策1:上記のとおり、簡単な解決策は、すべてのPython3環境を削除して、それらを再度作成することです。私はUbuntuをアップグレードした後に2回目ですから、好きではありません。また、私は将来のプロジェクトで複数のPython 3バージョンを使用する必要があります。

解決策2:これは私が今日試したもので、うまくいきます。 virtualenv + virtualenvwrapperを使用する代わりに、私はpyenv + pyenv-virtualenvの組み合わせを試すことにしました。

二つのアプローチの主な違いは次のとおりです。

Pyenv実際にコピー全体のPython インストール新しいpyenvバージョンを作成するたびに。対照的に、 virtualenvは、シンボリックリンクを使用して、 virtualenvのサイズを縮小します。

方法:Pythonの2と3の必要なバージョンと共にhereに記載されるように

  1. はpyenvをインストールします。
  2. pyenvを使用してvirtualenvを操作する方法については、hereをご覧ください。
  3. 新しい環境を作成し、pipですべての依存関係をインストールして、次のUbuntuのアップグレード中にシンボリックリンクが壊れてしまう問題を忘れてしまいました。
0

を見るべきである私は、新しいvirtualenvのを作成し、古い壊れたvirtualenvのにPythonの実行可能ファイルをコピーして、それを修正しました。