从标准Python调用IronPython

时间:2015-01-06 14:05:18

标签: python .net interop ironpython python.net

如何在Python中调用IronPython函数?有没有一种简单的方法来连接这两者。我需要灵活的IronPython中不可用的全套Python库以及Python .net目前不具备的最新CLR。

我迄今为止尝试过的是编译IronPython dll,但我无法在Python中正确加载它。

我试图让IronPython可以从Python调用

foo.py

def foo():
    print 'hello world'

compile_ipy.py

import clr
clr.CompileModules("foo.dll", "foo.py")

我尝试从Python调用Iron Python

call_ipy_from_py1.py

import ctypes
dll = ctypes.WindDLL('foo.dll')
dll.foo() # AttributeError: function 'foo' not found

call_ipy_from_py2.py

import ctypes
dll = ctypes.cdll.LoadLibrary('foo.dll')
dll.foo() # AttributeError: function 'foo' not found

1 个答案:

答案 0 :(得分:3)

.NET DLL与C DLL(您可以通过ctypes使用)不同。但是,您可以使用Python.NET库来调用这样的函数:

import clr # Imports Python.Runtime.dll
import foo # Imports foo.dll
foo.foo()

我不知道你所说的“Python .net当前没有的最新CLR”是什么意思。您可以使用此处提供的版本:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonnet如果您需要使用CPython 3,我将它与.NET 4.5.1库一起使用而没有问题。