Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
以编程方式加载Python模块/函数 我的主要应用程序是Objective-C/Cocoa(OS X) 主要应用程序使用Python“插件”进行“扩展” 我们正在使用Python框架_Python_Objective C_Macos_Cocoa - Fatal编程技术网

以编程方式加载Python模块/函数 我的主要应用程序是Objective-C/Cocoa(OS X) 主要应用程序使用Python“插件”进行“扩展” 我们正在使用Python框架

以编程方式加载Python模块/函数 我的主要应用程序是Objective-C/Cocoa(OS X) 主要应用程序使用Python“插件”进行“扩展” 我们正在使用Python框架,python,objective-c,macos,cocoa,Python,Objective C,Macos,Cocoa,这是我用作执行特定脚本的“桥梁”的代码: from Foundation import * from AppKit import * import imp import sys class ppPluginBridge(NSObject): @classmethod def loadModuleAtPath_functionName_arguments_documents_(self, path, func, args,docs): f = open(pat

这是我用作执行特定脚本的“桥梁”的代码:

from Foundation import *
from AppKit import *

import imp
import sys

class ppPluginBridge(NSObject):
    @classmethod
    def loadModuleAtPath_functionName_arguments_documents_(self, path, func, args,docs):

        f = open(path)
        try:
             mod = imp.load_module('plugin', f, path, (".py", "r", imp.PY_SOURCE))
             realfunc = getattr(mod, func, None)
             if realfunc is not None:
                 realfunc(*tuple(args))
        except Exception as e:
             docs.showConsoleError_('%s' % e)
        finally:
             f.close()
             return NO

        return YES
因此,该函数在
path
中获取一个脚本并加载/执行它

现在,我需要的是:使一些python类/函数/模块自动可用于最终的脚本(要么在外部声明,要么最好在我的
ppPluginBridge.py
文件中声明)


怎样才能做到这一点呢?

首先,我要加载类似这样的内容:

>>> class Thingus:
...     def __init__(self):
...         module = __import__('string')
...         setattr(self,module.__name__,module)
... 
>>> thing = thingus()
>>> thing.string
<module 'string' from '/usr/lib/python2.7/string.pyc'>
>>> 
…或者你做了什么。Python非常有表现力,因此将Python模块本身作为配置文件并没有什么错。当然,配置文件应适当分开,并在建立默认值后被版本控制系统忽略,以便个别安装可以更改它们。

注意:表示函数始终返回
NO
plugin_modules = [ 'plugins.loader', 'plugins.serializer' ]