Problem polega na tym, że WxPython jest dostępny tylko na komputerze Mac w trybie 32-bitowym; jednak domyślnie Python uruchomi się w trybie 64-bitowym. Aby rozwiązać ten problem, należy utworzyć następujący skrypt o nazwie python_32
:
#! /bin/bash
export VERSIONER_PYTHON_PREFER_32_BIT=yes
/usr/bin/python "[email protected]"
Uczyń skrypt (chmod a+x python_32
) i umieścić skrypt na swojej drodze. Teraz wystarczy wywołać python_32
, aby uzyskać interaktywną konsolę Python, w której można używać WxPython. Jeśli chcesz napisać skrypt w języku Python, który używa tego, możesz użyć kodu shebang: #! /usr/bin/env python_32
.
Teraz wyjaśnić ... podstawowy problem polega na tym, że 32-bitowy i 64-bitowy kod wykorzystuje inny interfejs binarny aplikacji (ABI), więc 32-bitowy kod i 64-bitowy kod nie mogą współistnieć w tej samej bibliotece/executable/process. Aby obsługiwać tryb 64-bitowy, musi zostać skompilowany w trybie 64-bitowym; podobnie, aby obsługiwać tryb 32-bitowy, musi być skompilowany w trybie 32-bitowym. W OS X jest to możliwe, przy użyciu uniwersalnych binariów do obsługi obu ... jednak musi być skompilowany w obu trybach (a następnie scalony). WxWidgets prawdopodobnie używa węgla, który jest dostępny tylko w trybie 32-bitowym (kakao jest dostępne zarówno w trybie 32-bitowym, jak i 64-bitowym ... Apple nie zadał sobie trudu, by Carbon był dostępny w obu trybach, ponieważ jest przestarzały), co wyjaśniłoby, dlaczego WxPython mógł być dostarczony tylko w trybie 32-bitowym. To z kolei oznacza, że użycie go w Pythonie wymaga uruchomienia Pythona w trybie 32-bitowym (Python jest uniwersalnym plikiem binarnym z zarówno 32-bitowymi, jak i 64-bitowymi wersjami, dostępnymi w tym samym pliku binarnym, więc może być uruchomiony w obu trybach).
alternatywna opcja
Nie polecam robić to, bo myślę, że należy pozostawić domyślne takimi jakie są, ale skoro nie mieć wystarczającej wiedzy skryptów powłoki (trzeba użyć”./python_32" lub umieść go w folderze wymienionym w zmiennej środowiskowej "$ PATH" i wywołaj jako "python_32"), aby wykonać poprzednią opcję, możesz po prostu wykonać następujące polecenie, które spowoduje, że tryb 32-bitowy będzie domyślny:
defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
Jeśli zdecydujesz, że chcesz, aby powrócić do trybu 64-bitowego, można użyć następującego polecenia:
defaults write com.apple.versioner.python Prefer-32-Bit -bool no
Należy pamiętać, że oba polecenia mają być wykonywane na terminalu (nie w Pythonie).
Źródło
muszę podkreślić, że oba są na podstawie zaleceń man python na Mac OS X. Tak więc, jeśli masz jakiekolwiek inne pytania, powinno się przeczytać stronę man jako komunikat o błędzie wezwał cię do zrobienia .
Czy zamierzasz przekazać nam swoje wyniki lub zagłosować na odpowiedź? –