Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法再使用Python2.6C接口,但2.5可以工作_Python_Ctypes_Python 2.6_Python 2.5 - Fatal编程技术网

无法再使用Python2.6C接口,但2.5可以工作

无法再使用Python2.6C接口,但2.5可以工作,python,ctypes,python-2.6,python-2.5,Python,Ctypes,Python 2.6,Python 2.5,我只是注意到我不能再使用Python2.6DLL了。Python2.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_Sim

我只是注意到我不能再使用Python2.6DLL了。Python2.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坏了吗

更新

在Python2.7Alpha dll中尝试了这个方法,它似乎可以工作,因此可能是2.6版本的问题。 用Python2.7Alpha在UbuntuX64上尝试了这一点,它没有出现分段错误。
我怀疑你能不能在同一个过程中加载2.5和2.6。。。ctypes.cdll.python26.Py_单独初始化是否有效


编辑:等等,你是想从Python内部加载Python DLL吗?什么?

你所做的是错的。很明显,您正在运行Python2.6,然后尝试在同一进程和线程中初始化共享库,如果幸运的话,它将崩溃……如果不幸运的话,它将在以后给您带来非常麻烦。您永远不应该尝试将Python加载到自身中并调用Py_Initialize。

当我做一些奇怪的事情时,您似乎将works与Not Segfult混淆;你需要告诉我们你想完成什么样的实际任务。如果您像这样展示您的代码会有所帮助:下面是一个脚本,该脚本将使用Python2.5运行,包含25和2.5硬编码;它在使用Python 2.5运行时工作。将上述所有内容适当地更改为25或2.6,则不起作用。更好的是:一个脚本,如果需要,它可以获取当前的版本号和平台,并在不硬编码版本号的情况下执行您想要的操作。