Come controllare se una libreria è disponibile a 32 bit / 64 bit su Mac OS X?
-
13-09-2020 - |
Domanda
Sto avendo qualche problema nell'uso di Pyqt / SIP.Immagino che il SIP sia compilato in 64 bit, ma Python ha qualche problema con la trovarlo.
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.
- .
- Come faccio a sapere se una libreria (SO / DYLIB) è a 32 bit o 64 bit?
- Come faccio a sapere se il mio Python è a 32 bit o 64 bit?
Soluzione
Lo strumento file
può essere utilizzato per identificare gli eseguibili.
Esempio:
> 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
. Altri suggerimenti
Per trovare le architetture disponibili nell'istanza Python che stai utilizzando:
$ 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
.
Per trovare se il Python è attualmente in esecuzione a 32 bit o 64 bit (10,6 esempi):
$ /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
.
Per Python3, sostitutivo sys.maxsize
per sys.maxint
:
$ python3 -c "import sys;print('%x'%sys.maxsize)"
7fffffff
. lipo -info target/libexample-df07142d9bfd950a.a
input file target/libexample-df07142d9bfd950a.a is not a fat file
Non-fat file: target/libexample-df07142d9bfd950a.a is architecture: x86_64
.
o
lipo -info `which python`
Non-fat file: /usr/local/bin/python is architecture: x86_64
.
Non utilizzare file
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow