Вы неправильно понимаете, как установки Python работают на OS X. Каждый экземпляр Python имеет свой собственный каталог site-packages
.Стандартное расположение установщиков фреймворка находится в рамках ./lib/pythonx.y/site-packages
.Так что для установщиков python.org, которые устанавливаются в /Library/Frameworks/Python.framework
, вы найдете его 2.6 site-packages
здесь:
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
Apple делает некоторые модификации версий Python, которые поставляются с выпусками OS X.Начиная с OS X 10.5, системные Pythons устанавливаются по адресу:
/System/Library/Frameworks/Python.framework
, и Apple решает включить некоторые дополнительные сторонние пакеты в нестандартный каталог ./Extras
в каждомверсия.Он также использует нестандартное расположение для каталога site-packages
каждой версии.Они создаются в /Library/Python/
, предположительно, чтобы установленные пользователем пакеты ничего не изменяли в /System/Library
.Таким образом, для поставляемого Apple Python 2.6 его каталог site-packages
:
/Library/Python/2.6/site-packages
и может рассматриваться как расширенный пакетами в ./Extras
.
Каждый PythonЭкземпляр имеет отдельный каталог site-packages
.Он не предназначен и часто не позволяет совместно использовать пакеты в site-packages
различных экземпляров даже одной и той же вспомогательной версии Python, то есть 2.6.Наиболее очевидная проблема заключается в том, что часто существуют различия в версии компилятора C, ABI OS X (MACOSX_DEPLOYMENT_TARGET
), версии SDK и / или архитектурах ЦП, используемых для создания интерпретаторов Python и впоследствии используемых Distutils длямодули расширения build C., включенные в сторонние пакеты.
В Mac OS X 10.6 поставляемый Apple Python построен с использованием gcc-4.2 и предназначен только для OSX 10.6 и включает 3 архитектуры ЦП (i386
,x86_64
и ppc
).Установщики python.org для Python 2.6 также созданы для работы на более старых системах, поэтому они имеют цель 10.3 и более поздние, используют gcc-4.0 и являются 32-разрядными (i386
и ppc
).Таким образом, в общем случае вы не можете запускать модули расширения C, созданные для одного Python вместе с другим.
Это означает, что, как правило, вам нужно устанавливать отдельные копии сторонних пакетов, которые вам нужны, для каждого и для каждого из них.Python, если они еще не включены в этот Python.Это включает в себя основные предметы, такие как easy_install
(из setuptools
или Distribute
).Система Pythons в 10.5+ включает в себя easy_install
версию в /usr/bin
для них.Если вы устанавливаете python.org Python, вам нужно установить для него отдельную версию;по умолчанию команда easy_install
будет установлена в каталог ./bin
этого Python в ее структуре;это расположение по умолчанию Distutils.Вот почему рекомендуется добавить этот каталог в PATH оболочки (а установщик python.org для Python 2 по умолчанию делает это автоматически).
Изменение, внесенное Issue4865, на самом деле не является хорошим решением и можетошибка с модулями расширения C.Я не буду зависеть от того, останется ли он в Python в будущих версиях.
Кроме того, установка Python в Python.org ни в коей мере не нарушает работу системного Python, поскольку они являются полностью независимыми установками, использующими различные расположения файловой системы.Единственное, что может измениться, это то, какой экземпляр Python вызывается при вводе определенного имени. То, что определяется главным образом порядком поиска переменной среды PATH оболочки.Как уже отмечалось, установщик python.org по умолчанию изменяет этот порядок, но системный Python по-прежнему доступен, используя его абсолютный путь /usr/bin/python2.6
.Или вы можете отменить изменения в профиле оболочки, например, .bash_profile
.
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.6/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
$ which python python2.6
/Library/Frameworks/Python.framework/Versions/2.6/bin/python
/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6
$ python -V
Python 2.6.6
$ python2.6 -V
Python 2.6.6
$ /usr/bin/python -V
Python 2.6.1
$ /usr/bin/python2.6 -V
Python 2.6.1
#
# remove python.org Python 2.6 from PATH
#
$ export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
$ which python python2.6
/usr/bin/python
/usr/bin/python2.6
$ python -V
Python 2.6.1
$ python2.6 -V
Python 2.6.1