Python 32bit di Snow Leopard

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 😀

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

This entry was tagged , . Bookmark the permalink.

One Response to Python 32bit di Snow Leopard

  1. 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

Leave a Reply