Wie überprüfe ich, ob eine Bibliothek 32-Bit/64-Bit ist und unter Mac OS X erstellt wurde?

StackOverflow https://stackoverflow.com/questions/3207177

Frage

Ich habe Probleme bei der Verwendung von PyQt/SIP.Ich vermute, dass das SIP in 64-Bit kompiliert ist, aber Python hat einige Probleme damit, es zu finden.

  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
  • Woher weiß ich, ob eine Bibliothek (so/dylib) 32-Bit oder 64-Bit ist?
  • Woher weiß ich, ob mein Python 32-Bit oder 64-Bit ist?
War es hilfreich?

Lösung

Der file Das Tool kann zur Identifizierung ausführbarer Dateien verwendet werden.

Beispiel:

> 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

Andere Tipps

So finden Sie die verfügbaren Architekturen in der von Ihnen verwendeten Python-Instanz:

$ 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

So finden Sie heraus, ob Python derzeit als 32-Bit- oder 64-Bit-Version ausgeführt wird (10.6-Beispiele):

$ /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

Für Python3 ersetzen sys.maxsize für sys.maxint:

$ python3 -c "import sys;print('%x'%sys.maxsize)"
7fffffff
generasacodicetagpre.

oder

generasacodicetagpre.

Verwenden Sie nicht generasAnticetagcode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top