我只注意到我不能再使用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