21

私は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は私のvirtualenvバージョンではなくdistutils_path、Mac OSXシステムバージョンのPythonで見つけようとしています。

なぜこれが突然起こり始めたのか分かりません。多分最近のOSXアップデート?もう 1 つの可能性は、私のハード ドライブが壊れそうになったので、Apple が新しいハード ドライブをくれて、Migration Assistant を実行したことです。何かが正しく転送されていない可能性がありますか?

4

5 に答える 5

33

distutils/__init__.pyOS X 10.7 Lion (OS X 10.5 Leopard から) に移行し、Migration Assistant を使用しているときに、この問題に遭遇しました。私はすでに Xcode 3.2.6 をインストールしています。したがって、install_name_tool が見つからないという問題は解決しました。

以前の virtualenv は Migration Assistant に引き継がれましたが、これらは Leopard の Python 2.5 に基づいていたため、現在のシステム Python 2.7 でそれぞれを再作成する必要があると考えています。

easy_install はすでに PATH にありました。おそらく、Lion の Python 2.7 にバンドルされていたためです。Migration Assistant の結果ではないようです。easy_install を使用して virtualenv をインストールしました。

この問題は、私には、Xcode や 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?

于 2011-12-05T23:29:34.657 に答える
22
> cd /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/
> sudo touch __init__.py

Lion のすぐに使用できる Python には、Python ソースがなく、コンパイルされた pyc/pyo ファイルのみが付属しています。ただし、virtualenv は、場所を確認するためだけに distutils ソース ファイルを探します。必要なのは、探しているファイルに触れて存在することだけです。

クレジットは「npdoty」と「Nat Goodspeed」に属します。

于 2012-04-15T23:19:18.813 に答える
7

問題は、Migration Assistantが、何らかの理由で、次のようなツールをコピーしなかったことでしたgcc。Xcodeを再インストールすると、正常に動作します。

于 2010-06-28T03:49:07.287 に答える
1

Migration AssistantはXCodeのようなものをあまりうまく処理しませんが、それでもいくつかのタイプのアプリケーションを転送するように設計されています。これは、フォルダ内に完全に存在する/Applications/アプリケーション、または/Applications/フォルダから起動して他の場所にある関連ファイル(たとえば/usr/bin/)をチェックし、起動時に検出されない場合にそれらをインストールするアプリケーションで最適に機能します。

http://support.apple.com/kb/HT4413を参照してください。

于 2012-08-07T20:21:51.110 に答える
0

私は Nat Goodspeed の同様のアプローチを使用しました。

しかし、すべての *.py ファイルをコピーしました。

システム python の同じバージョン、私の場合は 2.7.2 をダウンロードします。

$ python --version

ダウンロードして解凍します。 http://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2

# -n copy only missing files, -r recursively
$ sudo cp -rn ~/Downloads/Python-2.7.2/Lib/* /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
于 2013-02-21T23:58:56.230 に答える