OS X 10.9.4를 실행하는 Mac 랩톱에 Apple에서 설치 한 Python 2.7.5 배포본을 사용하고 있습니다.pip 및 .tar.gz 소스가없는 동안 easy_install이 Python 모듈로드 경로를 올바르게 수정하는 이유는 무엇입니까?
이 배포판은 numpy과 같이 널리 사용되는 여러 가지 Python 애드온 패키지의 "초기로드"버전과 함께 제공되며 그 중 다수는 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
디렉토리에 있습니다.
Apple 공장에서 설치 한 업데이트 유틸리티 인 /usr/bin/easy_install
을 사용해야 만 미리로드 된 패키지의 버전 번호를 업데이트 할 수 있습니다. 대신 pip를 사용하여 업데이트하거나 python setup.py install
을 사용하여 .tar.gz 소스에서 직접 업데이트하려고하면 설치가 매우 특별하게 실패합니다. 이에 대해서는 아래에서 자세히 설명합니다. 이 문제를 해결하고 싶습니다. 파이썬 패키지를 내가 원하는 어떤 방법 으로든 업데이트 할 수 있습니다.
첫째, 나는 "올바른"행동이라고 믿는에 대한 설명 : 다음
$> ls -l /Library/Python/2.7/site-packages | grep numpy
drwxr-xr-x 4 root wheel 136 Sep 11 10:21 numpy-1.9.0-py2.7-macosx-10.9-intel.egg
과 : 나는 easy_install을 사용하여 NumPy와 업데이트, 그것은 예를 들어, /Library/Python/2.7/site-packages
에서, 새로운 서브 디렉토리, numpy-1.9.0-py2.7-macosx-10.9-intel.egg
를 생성 easy_install 유틸리티는 또한 파이썬 모듈로드 경로를 수정하여 "새로운"numpy 설치가 공장 기본 버전보다 우선합니다; 예를 들어이 파이썬에서, 그것은 다음과 같습니다 : 나는 sudo pip uninstall numpy
를 사용하여 예를 들어, NumPy와를 제거하면
In [1]: from pprint import pprint
In [2]: import sys
In [3]: pprint(sys.path)
['',
'/usr/local/bin',
'/Library/Python/2.7/site-packages/PyVCF-0.6.7-py2.7-macosx-10.9-intel.egg',
'/Library/Python/2.7/site-packages/distribute-0.7.3-py2.7.egg',
'/Library/Python/2.7/site-packages/setuptools-3.3-py2.7.egg',
'/Library/Python/2.7/site-packages/PyYAML-3.11-py2.7-macosx-10.9-intel.egg',
'/Library/Python/2.7/site-packages/wheel-0.24.0-py2.7.egg',
'/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg',
'/Library/Python/2.7/site-packages/numpy-1.9.0-py2.7-macosx-10.9-intel.egg',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC',
'/Library/Python/2.7/site-packages',
'/Library/Python/2.7/site-packages/IPython/extensions',
'/Users/stachyra/.ipython']
In [4]: import numpy
In [5]: numpy.__file__
Out[5]: '/Library/Python/2.7/site-packages/numpy-1.9.0-py2.7-macosx-10.9-intel.egg/numpy/__init__.pyc'
In [6]: numpy.__version__
Out[6]: '1.9.0'
, 그것은에서 삭제되는 NumPy와 결과 (사실 easy_install을 가진 제거 작업을 수행하는 방법을 알아낼 수) /Library/Python/2.7/site-packages
, 공장 출하시 설치된 "기본"버전은 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
입니다.
"잘못된"설치 동작을 관찰하기 위해 공장 출하 버전의 numpy를 이번에는 sudo pip install -U numpy
을 사용하여 다시 업그레이드 할 수 있습니다. , I를 NumPy와로드하고 버전 번호를보고 NumPy와 신청을 한 후 그러나
$> ls -l /Library/Python/2.7/site-packages | grep numpy
drwxr-xr-x 35 root wheel 1190 Sep 11 10:24 numpy
drwxr-xr-x 8 root wheel 272 Sep 11 10:24 numpy-1.9.0.dist-info
, 내가 파이썬에서 부하 경로에서보고,이는 /Library/Python/2.7/site-packages
에서 생성되는 디렉토리의 새로운 쌍, 예를 들면 리드 (당신이 볼 수 있듯이 핍은 새로 업데이트 된 NumPy와 버전으로의 sys.path 변수를 업데이트하지 못하는 것처럼
In [1]: from pprint import pprint
In [2]: import sys
In [3]: pprint(sys.path)
['',
'/usr/local/bin',
'/Library/Python/2.7/site-packages/PyVCF-0.6.7-py2.7-macosx-10.9-intel.egg',
'/Library/Python/2.7/site-packages/distribute-0.7.3-py2.7.egg',
'/Library/Python/2.7/site-packages/setuptools-3.3-py2.7.egg',
'/Library/Python/2.7/site-packages/PyYAML-3.11-py2.7-macosx-10.9-intel.egg',
'/Library/Python/2.7/site-packages/wheel-0.24.0-py2.7.egg',
'/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC',
'/Library/Python/2.7/site-packages',
'/Library/Python/2.7/site-packages/IPython/extensions',
'/Users/stachyra/.ipython']
In [4]: import numpy
In [5]: numpy.__file__
Out[5]: '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/__init__.pyc'
In [6]: numpy.__version__
Out[6]: '1.6.2'
위를 기반으로, 그것은 대신 최신 하나가 나타납니다 : 다음과 같은 결과를 얻을 수 numpy 1.9.0)가로드되는 경우, 파이썬은 대신 공장 출하시 기본 버전 인 1.6.2를로드합니다.
위의 두 가지 방법 외에도 sudo python setup.py install
을 사용하여 sourceforge .tar.gz 파일에서 직접 numpy를 설치할 수 있습니다.이 경우 pip를 사용할 때와 매우 유사한 결과를 얻습니다.
제 질문은 우선 무엇이 정확하게 여기에서 부러 졌습니까? 일반적인 기본 (/Library/Python/2.7/site-packages
) 외에도 미리로드 된 Python 패키지를 다른 비표준 디렉토리 영역 (/System/Library/Frameworks/Python.framework/Versions/2.7
)에 설치 한 Apple의 기본 파이썬 버전입니까? 또는 Apple 공장 기본 설치를 제대로 무시하지 못해서 pip와 .tar.gz 소스 파일입니까?
또한 내 질문의 두 번째 부분 : 어떻게하면이 문제를 해결할 수 있습니다. 그래서 내가 원하는 경우 나중에 핍 및 .tar.gz를 사용할 수 있습니까?그리고 FWIW, Apple 공장 기본값을 제거하는 것이 포함 된 답이 나온다면 /System/Library/Frameworks
디렉토리에 들어가서 물건을 수동으로 삭제하기를 원하지 않을 것입니다. 이는 물건을 깨뜨릴 수있는 잠재적 제조법처럼 보입니다.
한가지 더 : 나는, 그러나 문제를 해결하기 위해 나에게 더 깨끗하고 우아한 것, 아마 단순히 Anaconda 또는 Enthought Canopy 등 다른 대안 분포를 사용하여이 모든 문제를 회피 할 수 있음을 알고 있어요 "제대로" 가능하다면.