我只注意到我不能再使用Python 2.6 dll。 Python 2.5工作得很好。不能再使用Python 2.6的C接口,但2.5的作品
import ctypes
py1 = ctypes.cdll.python25
py2 = ctypes.cdll.python26
# ctypes.cdll.LoadLibrary("libpython2.6.so") in linux
py1.Py_Initialize()
py2.Py_Initialize()
# segmentation fault in Linux
py1.PyRun_SimpleString("print 'hello world'")
# this works because it is using python 2.5
py2.PyRun_SimpleString("print 'hello world2'")
# WindowsError: exception: access violation reading 0x00000004
我做錯了什麼或Python 2.6破了嗎?
更新
- 使用Python 2.7阿爾法DLL嘗試這樣做,它似乎工作,所以它可能是一個2.6的問題。
- 在Ubuntu x64上用Python 2.7 alpha嘗試了這個,它沒有出現分段錯誤。
這是什麼意思? – prestomation 2009-12-26 08:19:00
你似乎將「作品」與「當我做出奇怪的事情時不會發生段錯誤」混爲一談;你需要告訴我們你想要完成的實際任務。如果你這樣呈現你的代碼會有幫助:這是一個腳本,它是用Python 2.5運行的,包含硬編碼的「25」和「2.5」;它在用Python 2.5運行時「起作用」。將上述所有變爲適當的25或2.6,並且「不起作用」。更好的是:一個腳本獲取當前版本號(如果需要的話還有平臺),並且在沒有對版本號進行硬編碼的情況下做你想做的事情。 – 2009-12-26 13:05:43