[英]Calling Python code from Objective-C
我正在寻找从Objective-C程序调用Python代码的最佳方法。 一些细节:
将每个* .py封装到* .bundle中是想到的第一件事。
PythonClass.py:
import objc
NSObject = objc.lookUpClass('NSObject')
class PythonClass(NSObject):
def Function(self):
print("Python is speaking!")
setup.py:
from distutils.core import setup
import py2app
setup(
plugin = ['PythonClass.py'],
)
终端命令: python setup.py py2app -s -p objc
它工作正常,但是有几个问题:
NSObject
进行子类化,那么在Objective-C方面, [bundle principalClass]
PythonClass
[bundle principalClass]
为(Null)
, PythonClass
无法实例化PythonClass
。 有没有办法避免在* .py中使用NSObject
? 我也一直在考虑使用CFBundle
,但是CFBundleGetFunctionPointerForName(...)
总是返回NULL
(当然,在这种情况下,* .py包含一个函数,而不是一个类)。 我找不到关于此事的任何材料。 也许你们有些幸运。
有没有更好的方法将Python嵌入到Objective-C中?
使用Python / C API(Python和C之间的桥梁),调用Python代码的C ++类(便于管理的OOP层)以及此方法将C ++类放入CFBundle。
如有必要,这也适用于动态库(* .dylib)而不是CFBundle。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.