使用RPYC导入模块

时间:2015-09-04 21:39:07

标签: python python-2.7 rpyc

我试图远程进入交互式shell并在python 2.7中导入模块。我被挂了。到目前为止,这就是我所拥有的:

import rpyc
import socket

hostname = socket.gethostname()
port = 12345

connections = rpyc.connect(hostname,port)
session = connections.root.getSession()
会议存在

>>>session
<blah object at 0xMore-Goop>

我想发出import sys,以便我可以在路径中添加另一个模块。但是,当我尝试查看路径中是否存在模块时,我得到以下内容:

>>>connections.modules
AttributeError: 'Connection' object has no attribute 'modules'

我需要远程执行以下内容:

import sys
sys.path.append(path/to/import)
import file

log = file.logger(session, path/to/log)

是否有可能让rpyc发出上述内容?提前致谢

1 个答案:

答案 0 :(得分:0)

您可以将以下方法添加到服务中:

import sys, importlib, rpyc
...

class MyService(rpyc.Service):
    ...
    def exposed_import_module(self, mod):
        return importlib.import_module(mod)
    def exposed_add_to_syspath(self, path):
        return sys.path.append(path)

并像这样访问:

connections.root.add_to_syspath('path/to/import')
file = connections.root.import_module('file')
file.logger(session, 'path/to/log')