Проблема в том, что WxPython доступен только на Mac в 32-битном режиме; однако по умолчанию Python запускается в 64-битном режиме. Чтобы решить эту проблему, создайте следующий сценарий оболочки с именем python_32
:
#! /bin/bash
export VERSIONER_PYTHON_PREFER_32_BIT=yes
/usr/bin/python "$@"
Сделайте скрипт исполняемым (chmod a+x python_32
) и поместите скрипт в свой путь. Теперь просто вызовите python_32
, чтобы получить интерактивную консоль Python, в которой вы можете использовать WxPython. Если вы хотите написать скрипт Python, который использует это, вы можете использовать шебанг: #! /usr/bin/env python_32
.
Теперь объясним ... основная проблема заключается в том, что 32-разрядный и 64-разрядный код использует другой двоичный интерфейс приложения (ABI), и поэтому 32-разрядный код и 64-разрядный код не могут сосуществовать в одной библиотеке / исполняемый файл / процесс. Для поддержки 64-битного режима его необходимо скомпилировать в 64-битном режиме; аналогично, для поддержки 32-битного режима его необходимо скомпилировать в 32-битном режиме. Под OS X это возможно, используя универсальные двоичные файлы для поддержки обоих ... однако, это должно быть скомпилировано в обоих режимах (и затем объединено). WxWidgets, вероятно, использует Carbon, который доступен только в 32-битном режиме (Cocoa доступен как в 32-битном, так и в 64-битном режиме ... Apple не удосужилась сделать Carbon доступным в обоих режимах, так как это устарело), что объясняет, почему WxPython, в свою очередь, мог быть предоставлен только в 32-битном режиме. Это, в свою очередь, означает, что использование его в Python требует запуска Python в 32-разрядном режиме (Python - это универсальный двоичный файл с 32-разрядной и 64-разрядной версиями, доступными в одном двоичном файле, поэтому его можно запускается в любом режиме).
Альтернативный вариант
Я не рекомендую делать это, потому что я думаю, что вы должны оставить настройки по умолчанию такими, какие они есть, но, поскольку у вас может не быть достаточных знаний сценариев оболочки (вам нужно использовать «./python_32» или поместить его в папку, которая указана в ваша переменная окружения "$ PATH" и вызов ее как "python_32"), чтобы следовать первому варианту, вы можете просто выполнить следующую команду, которая сделает 32-битный режим по умолчанию:
defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
Если вы решили вернуться в 64-битный режим, вы можете использовать следующую команду:
defaults write com.apple.versioner.python Prefer-32-Bit -bool no
Обратите внимание, что обе команды должны выполняться в Терминале (не в Python).
Источник
Я должен отметить, что обе рекомендации основаны на man python в Mac OS X. Поэтому, если у вас есть какие-либо другие вопросы, вам обязательно следует прочитать страницу руководства, как вас об этом предупреждает сообщение об ошибке.