То, как проверить, является ли библиотека 32bit/64bit, основывалось на Mac OS X?

Я испытываю некоторые затруднения использовать PyQt/SIP. Я предполагаю, что SIP компилируется в 64 бита, но Python имеет некоторую проблему с нахождением его.

  File "qtdemo.py", line 46, in 
    import sip
ImportError: dlopen(/Library/Python/2.6/site-packages/sip.so, 2): no suitable image found.  Did find:
        /Library/Python/2.6/site-packages/sip.so: mach-o, but wrong architecture
  • Как я знаю, составляет ли библиотека (so/dylib) 32 бита или 64 бита?
  • Как я знаю, составляет ли мой Python 32 бита или 64 бита?
14
задан Mike Pennington 25 November 2011 в 12:11
поделиться

2 ответа

Инструмент file может быть использован для идентификации исполняемых файлов.

Пример:

> file /Applications/TextEdit.app/Contents/MacOS/TextEdit 
/Applications/TextEdit.app/Contents/MacOS/TextEdit: Mach-O universal binary with 2 architectures
/Applications/TextEdit.app/Contents/MacOS/TextEdit (for architecture x86_64):   Mach-O 64-bit executable x86_64
/Applications/TextEdit.app/Contents/MacOS/TextEdit (for architecture i386): Mach-O executable i386
17
ответ дан 1 December 2019 в 08:51
поделиться

Чтобы найти доступные архитектуры в используемом экземпляре Python:

$ file "$( "$(which python)" -c "import sys;print(sys.executable)" )"
/usr/bin/python: Mach-O universal binary with 3 architectures
/usr/bin/python (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386):    Mach-O executable i386
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc

Чтобы найти, работает ли Python в настоящее время в 32-битном или 64-битном режиме (10. 6 примеров):

$ /usr/bin/python2.6 -c "import sys;print('%x'%sys.maxint)"
7fffffffffffffff
$ arch -x86_64 /usr/bin/python2.6 -c "import sys;print('%x'%sys.maxint)"
7fffffffffffffff
$ arch -i386 /usr/bin/python2.6 -c "import sys;print('%x'%sys.maxint)"
7fffffff
$ arch -ppc /usr/bin/python2.6 -c "import sys;print('%x'%sys.maxint)"
7fffffff

Для python3 замените sys.maxsize на sys.maxint:

$ python3 -c "import sys;print('%x'%sys.maxsize)"
7fffffff
7
ответ дан 1 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

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