【问题标题】:Import modules using RPYC使用 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 发出上述内容?提前致谢

【问题讨论】:

    标签: python python-2.7 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')
    

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      • 2021-08-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多