Колесо установки Python 3.4 pip не работает на Yosemite - «не поддерживаемое колесо на этой платформе»

Я пытался установить numpy, pysci и т. д. на MacBook Pro с Yosemite и новой установкой ActiveState Python 3.4. Я пробовал много файлов колес, и все они терпят неудачу с "не поддерживаемым колесом на этой платформе". Например, используя последний файл колеса для Python 3.4 из https://pypi.python.org/pypi/numpy :

...$ sudo pip3 install numpy-1.9.1-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl

numpy-1.9.1-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl is not a supported wheel on this platform.

Я проследил путь через wheel.py, req.py и pep425tags.py, чтобы понять, почему это не удалось. В pep425tags.py он использует

distutils.util.get_platform().replace('.', '_').replace('-', '_')

который, по-видимому, затем сравнивается с тегами в имени файла колеса.

Поскольку я обновился до Yosemite, я ожидал, что мой компьютер выдаст что-то вроде: "macosx_10_10_intel" или "macosx_10_10_x86_64" - но вместо этого он вернет "macosx_10_6_x86_64"

>>> import distutils.util
>>> distutils.util.get_platform().replace('.', '_').replace('-', '_')
'macosx_10_6_x86_64'
>>> 

Я прав, что Йосемити, очевидно, сообщает, что это снежный барс? Или Python 3.4 ошибается? Это моя проблема с файлами колес? Если так, есть ли исправление?


Обновление до Python 3.4.2 устранило проблему, и я смог установить файл NumPy Wheel. Обратите внимание, однако, что distutils.util.get_platform () по-прежнему сообщает «macosx_10_6_intel», но это не влияет на установку.

Python 3.4.2 (v3.4.2:ab2c023a9432, Oct  5 2014, 20:42:22) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> import distutils.util
>>> distutils.util.get_platform().replace('.', '_').replace('-', '_')
'macosx_10_6_intel'
4 голоса | спросил user3743148 29 62014vEurope/Moscow11bEurope/MoscowSat, 29 Nov 2014 18:41:42 +0300 2014, 18:41:42

1 ответ


0

Учтите, что distutils.util.get_platform() возвращает минимальную версию , в которой будет работать двоичный файл:

  

Для систем Mac OS X версия ОС отражает минимальную версию, на которой      запускаются двоичные файлы (то есть значение MACOSX_DEPLOYMENT_TARGET      во время сборки Python), не версия операционной системы текущей системы.

Акцент мой . Тем не менее, для Python 3.4 вы можете ожидать, что значение будет 10.10, если вы построили Python на этой платформе.

Чтобы Python мог правильно обрабатывать MACOSX_DEPLOYMENT_TARGET, вам необходимо выполнить обновление до Python 3.4.2; 3.4.1 не готова для Mac OS X 10.10 или выше. Смотрите проблему # 21811 :

  

В базе кода cpython есть ряд мест, в которых принимаются решения на основе либо версии работающей системы, либо ABI OS X (например, значения MACOSX_DEPLOYMENT_TARGET), с которым был создан или создается интерпретатор. В большинстве текущих тестов сравниваются значения этих строк, которые не будут корректно работать с двузначным номером версии («10 .10» <«10 .9» -> True).

3.4.2 включает в себя необходимые исправления. То же самое относится к Python 2.7 до версии 2.7.7; если вы видите ту же проблему в обновлении Python 2.7 до версии 2.7.8 или выше.

Без исправлений intel смешивается с x86_64, как в случае с вашей настройкой:

  
  1. При запуске двоичных установщиков 3.4.1 и 2.7.7 в 10.10 сборка модулей расширения C, скорее всего, приведет к неверному универсальному имени платформы, например, "x86_64" вместо "intel", что может повлиять на модуль расширения. имена файлов и колеса или яйца.
  2.   

Для справки, в моей системе OS X 10.10 на Python 3.4.2 результат get_platform():

>>> import distutils.util
>>> distutils.util.get_platform()
'macosx-10.10-x86_64'

и для Python 2.7.8 я получаю:

>>> import distutils.util
>>> distutils.util.get_platform()
'macosx-10.4-x86_64'
ответил Martijn Pieters 29 62014vEurope/Moscow11bEurope/MoscowSat, 29 Nov 2014 18:56:36 +0300 2014, 18:56:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132