私は Python 開発に virtualenv + pip を使っています。何が起こったのかはわかりませんが、突然、コマンドライン ツールを実行したりライブラリをインポートしようとすると、次のエラー メッセージが表示されます。
Traceback (most recent call last):
File "/Users/kyle/.virtualenvs/fj/bin/pip", line 4, in <module>
import pkg_resources
File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 698, in <module>
the platform/python version defined at initialization are added.
File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 701, in Environment
search_path = sys.path
File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 96, in get_supported_platform
'Environment', 'WorkingSet', 'ResourceManager',
File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 221, in get_build_platform
if provDarwin:
File "/Users/kyle/.virtualenvs/fj/lib/python2.6/distutils/__init__.py", line 14, in <module>
exec open(os.path.join(distutils_path, '__init__.py')).read()
IOError: [Errno 2] No such file or directory: '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/__init__.py'
私が解読できたところによると、Pythonはdistutils_path
Mac OSXシステムバージョンのPythonを見つけようとしているようです。ない私の virtualenv バージョンはこうあるべきです。
なぜ突然このようなことが起き始めたのかはわかりません。最近の OSX のアップデートが原因かもしれません。別の可能性としては、ハード ドライブが壊れそうだったので、Apple が新しいハード ドライブを渡し、移行アシスタントを実行したのかもしれません。何かが正しく転送されなかったのでしょうか。
ベストアンサー1
OS X 10.5 Leopard から OS X 10.7 Lion に移行し、移行アシスタントを使用しているときに、この問題に遭遇しましたdistutils/__init__.py
。Xcode 3.2.6 はすでにインストール済みなので、install_name_tool が見つからないという問題は解決しました。
移行アシスタントによって以前の仮想環境が移行されましたが、それらは Leopard の Python 2.5 に基づいていたため、現在のシステムの Python 2.7 でそれぞれを再作成する必要があると考えました。
easy_install はすでに PATH にありました。おそらく Lion の Python 2.7 にバンドルされていたためでしょう。移行アシスタントの結果ではないようです。easy_install を使用して virtualenv をインストールしました。
この問題は、Xcode やその欠如とは関係がないように思えます。これは、virtualenv コマンドによって新しい仮想環境に配置されるファイル内の特異な行です。
File "/path/to/my/virtualenv/lib/python2.7/distutils/__init__.py", line 16, in
exec(open(os.path.join(distutils_path, '__init__.py')).read())
IOError: [Errno 2] No such file or directory: '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/__init__.py'
問題は、Lion にバンドルされている Python 2.7 インストールでは、ライブラリに .py ソース ファイルが付属していないことです。そのディレクトリには .pyc ファイルと .pyo ファイルは含まれていますが、.py ファイルは含まれていません。virtualenv はそれを想定していないようです。
私の回避策は、Python 2.7 ソースをダウンロードすることです。
http://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2
distutils/__init__.py
予想される場所に解凍します。
sudo tar xvjf ~/Downloads/Python-2.7.2.tar.bz2 --strip-components=2 -C /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
Python-2.7.2/Lib/distutils/__init__.py
これにより、virtualenv が正常に完了し、結果として得られる Python インタープリターが実行されるようになります。
Lion にバンドルされている Python 2.7 ライブラリがソースなしでインストールされていることを考えると、virtualenv を変更して または のいずれかを試すことが有用であるように思われるかもしれませdistutils/__init__.py
んdistutils/__init__.pyc
。