2011-12-20 10 views
0

私はOS X Lionを実行しています(Leopardで起動し、2回のアップグレードを経ています)。 OS X LionにはPython 2.7が付属しています。ある時点では、Pythonとそのパッケージが連携していると思っていました。OS X LionでのPythonとパッケージの適切なアクセス

私はPythonを非スーパーユーザーとして実行できます。しかし、パッケージをインポートしたり、easy_installを実行しようとすると、次のエラーが発生します。

system:distutils $ python 
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import zope 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/zope/__init__.py", line 1, in <module> 
    __import__('pkg_resources').declare_namespace(__name__) 
    File "build/bdist.linux-i686/egg/pkg_resources.py", line 698, in <module> 
    class Environment(object): 
    File "build/bdist.linux-i686/egg/pkg_resources.py", line 701, in Environment 
    def __init__(self, search_path=None, platform=get_supported_platform(), python=PY_MAJOR): 
    File "build/bdist.linux-i686/egg/pkg_resources.py", line 96, in get_supported_platform 
    plat = get_build_platform(); m = macosVersionString.match(plat) 
    File "build/bdist.linux-i686/egg/pkg_resources.py", line 222, in get_build_platform 
    plat = get_platform() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/util.py", line 165, in get_platform 
    "Don't know machine value for archs=%r"%(archs,)) 
ValueError: Don't know machine value for archs=() 
>>> ^D 
system:distutils $ 

私は、rootまたはsudoとしてそれを実行すると、すべてが正常に動作します。すべてのディレクトリとファイルにはそれぞれ0755または0644のアクセス許可があります。

PythonとそのパッケージがOS X Lionで使用する権限はどのようなものなので、通常のユーザーとして使用できますか?私の許可が現在デフォルトに設定されているか、それとも途中で許可が壊れてしまったのか。

私は/ System/Library/...と/ Library/Python/...ディレクトリを使い、私の所有権とアクセス権を変更することができます。しかし、それは正しい解決策ではないようです。

答えて

0

しばらく苦労し、繰り返し不満を抱いて、easy_installがこのエラーで失敗する可能性がある2つの理由がわかりました。

  1. 私は単純にエラーが発生し行を見つけるためにutil.pyにコードを経て、その結果を変更
  2. (私はすでにやっている)XCodeのをインストールする必要があります。

これは完全に機能しました。私は今、そのエラーを受け取ることはありません。私は解決のために以下のdiffを入れました。 OS X LionではすべてのPPCサポートが削除されているため、machineタイプの場合は'intel'を選択しました。

私はこれが他の人に役立つことを願っています。

wintermute:distutils $ pwd 
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils 
wintermute:distutils $ diff -U 5 util.py.bad util.py 
--- util.py.bad 2012-03-03 15:30:39.000000000 -0500 
+++ util.py 2012-03-03 15:32:21.000000000 -0500 
@@ -159,12 +159,13 @@ 
       elif archs == ('ppc64', 'x86_64'): 
        machine = 'fat64' 
       elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'): 
        machine = 'universal' 
       else: 
-     raise ValueError(
-      "Don't know machine value for archs=%r"%(archs,)) 
+     machine = 'intel' 
+     #raise ValueError(
+     # "Don't know machine value for archs=%r"%(archs,)) 

      elif machine == 'i386': 
       # On OSX the machine type returned by uname is always the 
       # 32-bit variant, even if the executable architecture is 
       # the 64-bit variant 
wintermute:distutils $ 
0

あなたのPythonセットアップには珍しいことがあります。私のライオン(10.7.3)システムでは、アップルが提供するのPython 2.7は、このバナーを持っており、Zopeのをインポートする問題はありません。

$ /usr/bin/python2.7 
Python 2.7.1 (r271:86832, Jul 31 2011, 19:30:53) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import zope 
>>> 

おそらく、あなたはインストールライオンの部品のプレリリース版を持っていますか?

+0

私は間違いなくあなたが正しいと思います。私は同じビルドのPythonを持っています。私はSnow Leopardからアップグレードしました。ライオンをクリーンインストールしましたか?私は1つの問題は以前は、私はXCodeがインストールされていなかったかもしれないと思う。 – Brian

+0

SLからマシンをアップグレードして、Lionをクリーンインストールしました。私の知る限りでは、2011年7月31日以外のビルド日付でAppleの '/ usr/bin/python2.7'を見たことはありません。 –

+0

なぜ私のビルド日は2011年7月31日ではないのかわかりませんが、他の多くの人にビルド日があります。私はプレリリース版を使用せず、Lion 10.7.3を実行しています。私は昨日Xcodeの最新バージョンにもアップグレードしました。 – Brian

0

エラーのためにグーグルでここに来る場合は、これは許可の問題ではない可能性もあります。むしろ、(Apple)プラットフォームを決定するためにPythonによって使用される環境変数が正しく設定されていないために発生します。

関連のフラグは、少なくとも、次のとおりです

'CFLAGS'、 'LDFLAGS'、 'C​​PPFLAGS'、 'BASECFLAGS'、 'BLDSHARED'、 'LDSHARED'、 'C​​C'、 'C​​XX'、 'PY_CFLAGS'、 'PY_LDFLAGS'、 'PY_CPPFLAGS'、 'PY_CORE_CFLAGS'

Python stdlibの_osx_support.pyファイルと特にget_platform_osx関数をチェックしてください。それはすべてそこにある。