Python 2.6.1 bawaan Snow Leopard ternyata secara default bekerja dalam mode 64bit. Pada beberapa kasus, hal ini bisa membawa masalah misalnya jika bekerja dengan pustaka lain yang tidak menyediakan versi 64bit. Contohnya adalah pustaka QuickTime yang digunakan oleh Pyglet.
$ python coba-pyglet.py
Traceback (most recent call last):
...
File "build/bdist.macosx-10.6-universal/egg/pyglet/lib.py", line 226, in load_framework
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ctypes/__init__.py", line 423, in LoadLibrary
return self._dlltype(name)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ctypes/__init__.py", line 345, in __init__
self._handle = _dlopen(self._name, mode)
OSError: dlopen(/System/Library/Frameworks/QuickTime.framework/QuickTime, 6): no suitable image found. Did find:
/System/Library/Frameworks/QuickTime.framework/QuickTime: no matching architecture in universal wrapper
/System/Library/Frameworks/QuickTime.framework/QuickTime: no matching architecture in universal wrapper
Kalau dicek, memang pustaka tersebut tidak mengandung versi 64 bit.
$ file /System/Library/Frameworks/QuickTime.framework/QuickTime
/System/Library/Frameworks/QuickTime.framework/QuickTime: Mach-O universal binary with 2 architectures
/System/Library/Frameworks/QuickTime.framework/QuickTime (for architecture i386): Mach-O dynamically linked shared library i386
/System/Library/Frameworks/QuickTime.framework/QuickTime (for architecture ppc7400): Mach-O dynamically linked shared library ppc
Lalu caranya gimana? Ternyata manual python di Snow Leopard sudah memberitahukan informasi ini :D
$ export VERSIONER_PYTHON_PREFER_32_BIT=yes
Cukup mengeset environment variable seperti di atas dan jalankan Python seperti biasa. Python akan dijalankan dalam mode 32 bit dan masalah di atas pun tidak ada.
Kalau ingin diset secara default, maka jalankan perintah berikut.
$ defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
Setiap Python yg dijalankan setelah ini akan secara otomatis berjalan di bawah mode 32 bit. Ganti nilai yes menjadi no untuk mematikannya alias mengembalikan agar berjalan dalam mode 64 bit secara default.
1 komentar:
yeah, aku sempat bingung saat script pythonku ngambek di Snow Leopard. Ternyata modul VPython memang tidak mendukung 64bit. Mau mengeset default ke 32bit sayang, akhirnya tiap mau nge-run pake perintah kayak gini
$python2.7-32 file.py
Sekarang sudah pake Lion, dan perintah tersebut tetap berlaku.
Semoga library-library yang masih 32bit membuat dukungan untuk 64bit
Poskan Komentar