使用 RPYC 导入模块
Posted
技术标签:
【中文标题】使用 RPYC 导入模块【英文标题】:Import modules using RPYC 【发布时间】:2015-09-04 21:39:06 【问题描述】:我正在尝试远程进入交互式 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】:您可以在服务中添加以下方法:
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')
【讨论】:
以上是关于使用 RPYC 导入模块的主要内容,如果未能解决你的问题,请参考以下文章