最近、他のアプリケーション(デフォルトのテキストエディターとしてターミナルではなくiTermに変更し、デフォルトのテキストエディターとしてSublimeに変更)とともに多数のドットファイルをMacにインストールしましたが、それ以降、.virtualenvs内のフォルダーはすべての仮想環境が機能しなくなりましたまだそこにあり、何かを実行しようとすると次のエラーが発生します:
dyld: Library not loaded: @executable_path/../.Python
Referenced from: /Users/[user]/.virtualenvs/modclass/bin/python
Reason: image not found
Trace/BPT trap: 5
ドットファイルに関連するすべてのファイルを削除し、.bash_profileを以前の状態に復元しましたが、問題は解決しません。問題を診断したり、簡単な方法で解決したりする方法はありますか(たとえば、すべてのvirtualenvをもう一度作成する必要はありません)?
問題の解決策を見つけました here なので、すべての功績は著者にあります。
要点は、virtualenvを作成すると、HomebrewがインストールされたPythonへの多くのシンボリックリンクが作成されるということです。
次に例を示します。
$ ls -la ~/.virtualenvs/my-virtual-env
...
lrwxr-xr-x 1 ryan staff 78 Jun 25 13:21 .Python -> /usr/local/Cellar/python/2.7.7/Frameworks/Python.framework/Versions/2.7/Python
...
Homebrewを使用してPythonをアップグレードし、brew cleanup
を実行すると、virtualenvのシンボリックリンクは、(Homebrewが削除したため)もはや存在しないパスを指します。
シンボリックリンクは、新しくインストールされたPythonを指す必要があります。
lrwxr-xr-x 1 ryan staff 78 Jun 25 13:21 .Python -> /usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/Python
解決策は、virtualenvのシンボリックリンクを削除してから再作成することです。
find ~/.virtualenvs/my-virtual-env/ -type l -delete
virtualenv ~/.virtualenvs/my-virtual-env
削除する前に、どのリンクが最初に削除されるかを確認するのがおそらく最善です:
find ~/.virtualenvs/my-virtual-env/ -type l
私の意見では、壊れたシンボリックリンクのみを削除する方が良いでしょう。 GNU find
を使用してこれを行うことができます。
gfind ~/.virtualenvs/my-virtual-env/ -type l -xtype l -delete
Homebrewをまだお持ちでない場合は、GNU find
をインストールできます。
brew install findutils
デフォルトでは、HomebrewでインストールされたGNUプログラムの先頭にはg
という文字が付きます。これは、OS Xに同梱されるfind
バイナリのシャドウイングを回避するためです。
いくつかのことを試した後、これは私のために働いた:
virtualenvディレクトリに移動します(ただし、workonは実行しないでください)。
cd ~/.virtualenv/name_of_broken_venv
これらのファイルを削除します。
rm -rf .Python bin/python* lib/python2.7/* include/python2.7
次に、venvを再構築するには、次を実行します。
virtualenv .
workon name_of_broken_venv
pip freeze
インストールされたパッケージのリストが再び表示されるはずです。
これは、Snow LeopardからMac OS X Mavericksにアップデートしたときに発生しました。 brewも事前に再インストールする必要がありました。うまくいけば、pipでプロジェクトの凍結コマンドを実行しました。
解決するには、仮想環境が指すパスを更新する必要があります。
brew install python
pip install --upgrade virtualenvwrapper
rmvirtualenv old_project
mkvirtualenv new_project
workon new_project
pip install -r requirements.txt
これにより、プロジェクトは以前のままになります。
表示される この問題を解決する適切な方法は、実行することです
pip install --upgrade virtualenv
pythonをHomebrewでアップグレードした後。
これは、独自のパッケージ管理システムを持つpythonのようなものをインストールする数式の一般的な手順です。 brew install python
をインストールすると、python
とpip
およびeasy_install
とvirtualenv
などがインストールされます。したがって、これらのツールを自己更新できる場合は、Homebrewを問題の原因として探す前に、それを試してみるのが最善です。
これが、Pythonをアップグレードしたbrew upgrade
が原因で、以前のバージョンにダウングレードしても問題ない場合は、brew switch python [previous version]
、たとえばbrew switch python 3.6.5
を試してください。 ここから
@Chris Wedgwood
を維持するための更新バージョンsite-packages
の回答(パッケージをインストールしたままにする)
cd ~/.virtualenv/name_of_broken_venv
mv lib/python2.7/site-packages ./
rm -rf .Python bin lib include
virtualenv .
rm -rf lib/python2.7/site-packages
mv ./site-packages lib/python2.7/
Python3を破壊した場合は、それを修正してくれたbrew upgrade python3
を試してください。
私は最近これに直面しました。上記のソリューションはどれもうまくいきませんでした。実際にはPythonの問題ではなかったようです。走っていたときaws s3 ls
次のエラーが発生しました:dyld: Library not loaded: @executable_path/../.Python
これは、ライブラリaws
が指しているライブラリが存在しないか破損していることを意味します。したがって、 this link の指示に従ってaws-cli
をアンインストールして再インストールしました。
pipenv を使用している人は誰でも!
rm -rf `pipenv --venv` # remove the broken venv
pipenv install --dev # reinstall the venv from pipfile
仮想環境ラッパーの指示
受け入れられた答えに示されているように、根本的な原因はおそらく、virtualenvシンボリックリンクが壊れたpythonパスを指していることを意味するhomebrew更新です-詳細は here を参照してください。
仮想環境ごとに、正しいpythonパス(醸造セラー内)を指すようにシンボリックリンクを再割り当てする必要があります。 virtualenvwrapper を使用して行う方法を次に示します。ここでは、「my-example-env」という仮想envを更新しています。
cd ~/PYTHON_ENVS
find ./my-example-env -type l -delete
mkvirtualenv my-example-env
全部できた。
Python 2.7.10。の使用.
単一のコマンドvirtualenv path-to-env
が実行します。 ドキュメント
$ virtualenv path-to-env
Overwriting path-to-env/lib/python2.7/orig-prefix.txt with new content
New python executable in path-to-env/bin/python2.7
Also creating executable in path-to-env/bin/python
Installing setuptools, pip, wheel...done.
私(MacOSユーザー)にとっての問題は、brew
がPythonおよびvirtualenvsリンクを、削除された古いバージョンに更新したことです。
確認して修正することができます
>> ls -al ~/.virtualenvs/<your-virtual-env>/.Python
.Python -> /usr/local/Cellar/python/<old-version>/Frameworks/Python.framework/Versions/3.7/Python
>> rm ~/.virtualenvs/<your-virtual-env>/.Python
>> ln -s /usr/local/Cellar/python/<new-version>/Frameworks/Python.framework/Versions/3.7/Python ~/.virtualenvs/<your-virtual-env>/.Python
私にとってそれを修正したのは、python3とpipenvをアンインストールしてから再インストールするだけでした。
brew uninstall pipenv
brew uninstall python3
brew install python3
brew install pipenv
私はトップのいくつかの方法を試しましたが、私にとってはうまくいきませんでした。最終的に機能したのは:
Sudo pip install tox
toxが既にインストールされている場合でも。出力は次で終了しました:
Successfully built filelock
Installing collected packages: py, pluggy, toml, filelock, tox
Successfully installed filelock-3.0.10 pluggy-0.11.0 py-1.8.0 toml-0.10.0 tox-3.9.0
受け入れられた答えは私にとってはうまくいきません:ファイル$WORKON_HOME/*/bin/python2.7
はもはやシンボリックリンクではなく、本格的な実行可能ファイルです:
$ file $WORKON_HOME/*/bin/python2.7
/Users/sds/.virtualenvs/.../bin/python2.7: Mach-O 64-bit executable x86_64
...
解決策は、残念ながら、仮想環境を完全に削除して再作成することですall。
参考のために:
deactivate
pip install --user virtualenv virtualenvwrapper
pip install --user --upgrade virtualenv virtualenvwrapper
for ve in $(lsvirtualenv -b); do
# assume that each VE is associated with a project
# and the project has the requirements.txt file
project=$(cat $WORKON_HOME/$ve/.project)
rmvirtualenv $ve
mkvirtualenv -a $project -r requirements.txt $ve
done
Homebrewのpythonの再インストール(これによりシンボリックリンクが壊れる)と、以前に行ったいくつかの "Sudo pipインストール"により、仮想環境が壊れていました。 Weizhongのヒントは、パッケージを再インストールせずに問題を解決するのに非常に役立ちました。権限が混在する問題については、次のことも行わなければなりませんでした。
Sudo chown -R my_username lib/python2.7/site-packages
Python3をアップグレードするだけでうまくいきました。
brew upgrade python3