[解決済み】Virtualenvsの壊れたリファレンス
質問
最近、他のアプリケーションと一緒にドットファイルをたくさんMacにインストールしたのですが(ターミナルではなくiTermに変更し、デフォルトのテキストエディタとしてSublimeを使用)、それ以来、すべての仮想環境が動作しなくなりました。.virtualenvs内のフォルダはまだ残っていて、その中で何かを実行しようとすると次のエラーが表示されます。
dyld: Library not loaded: @executable_path/../.Python
Referenced from: /Users/[user]/.virtualenvs/modclass/bin/python
Reason: image not found
Trace/BPT trap: 5
dotfilesに関連するファイルをすべて削除し、.bash_profileを以前の状態に戻したのですが、問題は解決しません。この問題を診断したり、簡単な方法で解決する方法はないでしょうか(例えば、すべてのvirtualenvをもう一度作成する必要がないなど)?
解決方法を教えてください。
問題の解決策を見つけました こちら というわけで、すべての功績は著者にあります。
要は、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
仮想環境内のシンボリックリンクは、もはや存在しないパスを指しています (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
GNUをインストールすることができます。
find
をお持ちでない場合は、Homebrew でインストールしてください。
brew install findutils
デフォルトでは、HomebrewでインストールされたGNUプログラムには、接頭辞として
g
. の影を作らないようにするためです。
find
のバイナリがOS Xに同梱されています。
関連
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
Python 入出力と高次代入の基礎知識
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】Python: OverflowError: 数学の範囲エラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonコンテナのための組み込み汎用関数操作
-
Python 入出力と高次代入の基礎知識
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。