Ответ 1
В OS X 10.9 Apple Python поставляется с пакетом предустановленных дополнительных пакетов в каталоге с именем /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
. Включая numpy
.
И как они устанавливаются (как если бы с помощью easy_install
с древней версией setuptools
до 0,7, но не в любом из обычных easy_install
пунктов назначения), pip
не знает что-нибудь о них.
Итак, что происходит, когда sudo pip install numpy
устанавливает отдельную копию numpy
в '/Library/Python/2.7/site-packages'
, но в вашем sys.path
каталог Extras
находится перед каталогом site-packages
, поэтому import numpy
все еще находит копию Apple. Я не уверен, почему это так, но это, вероятно, не то, с чем вы хотите обезьяны.
Итак, как вы это исправите?
Два лучших решения:
-
Используйте
virtualenv
и установитеnumpy
и друзей в виртуальную среду вместо общесистемного. Это имеет недостаток, что вы должны научиться использоватьvirtualenv
, но это определенно стоит сделать в какой-то момент, и если у вас есть время, чтобы изучить его сейчас, пойдите для него. -
Перейдите на Python 3.x, либо из установщика python.org, либо через Homebrew. Python 3.4 или более поздняя версия поставляется с
pip
и не поставляется с любымиpip
-независимыми предварительно установленными пакетами. И, в отличие от установки отдельного 2.7, он вообще не мешает Apple Python;python3
иpython
,pip3
иpip
и т.д. все будут отдельными программами, и вам не нужно ничего узнавать о том, как работает PATH или что-то в этом роде. Это имеет недостаток, что вам нужно изучить Python 3.x, который некоторые основные изменения, так что опять-таки немного кривая обучения, но опять же, определенно стоит сделать в какой-то момент.
Предполагая, что ни один из них невозможен, я думаю, что самым простым вариантом является использование easy_install
вместо pip
для пакетов, которые вы хотите установить более новые версии любого из "дополнительных" приложений Apple. Вы можете получить полный список из них, посмотрев, что в /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
. При обновлении numpy
вы, вероятно, также захотите обновить scipy
и matplotlib
; Я думаю, что все остальное несвязано. (Вы можете, конечно, обновить PyObjC
или dateutil
или что-нибудь еще, что вас беспокоит, но вам не нужно.)
Это не идеальное решение; существует множество причин, по которым easy_install
уступает pip
(например, не имея деинсталлятора, поэтому вам нужно будет запомнить, где находится этот путь /Library/blah/blah
(или найти его снова с помощью распечатки sys.path
изнутри Python). Обычно я бы не предложил easy_install
для чего-либо, кроме readline
и pip
сам (а затем только с Apple Python). Но в этом случае я думаю, что это проще, чем другие альтернативы.