Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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 如何从Linux机箱通过RPyC调用pywin32_Python_Linux_Windows_Rpyc - Fatal编程技术网

Python 如何从Linux机箱通过RPyC调用pywin32

Python 如何从Linux机箱通过RPyC调用pywin32,python,linux,windows,rpyc,Python,Linux,Windows,Rpyc,简介: 我有一个装有Python2.7和RPyC的Linux机器。此外,我还安装了一个Windows(Server 2008)box,其中安装了相同的Python版本RPyC和pywin32。Windows box运行RPyC classic_服务器,Linux box用于运行RPyC客户端。通常,我正在构建infra,以便从Linux机箱远程管理Active Directory(AD)服务器。对于AD管理,将使用安装在Windows计算机上的“pyad”模块 问题: 通常,所有这些捆绑包都按照

简介:

我有一个装有Python2.7和RPyC的Linux机器。此外,我还安装了一个Windows(Server 2008)box,其中安装了相同的Python版本RPyC和pywin32。Windows box运行RPyC classic_服务器,Linux box用于运行RPyC客户端。通常,我正在构建infra,以便从Linux机箱远程管理Active Directory(AD)服务器。对于AD管理,将使用安装在Windows计算机上的“pyad”模块

问题:

通常,所有这些捆绑包都按照承诺工作

In [3]: conn = rpyc.classic.connect("10.103.224.44")
In [4]: conn.modules.os.getcwd()
Out[4]: 'C:\\ldap-automation-project\\scripts'
但当我尝试调用远程“pywin32”或“pyad”(pywin32是一个依赖项)时,它失败了

[7]中的
:conn.modules.pywin32
---------------------------------------------------------------------------
ImportError回溯(最近一次呼叫最后一次)
在()
---->1 conn.modules.pywin32
/usr/lib/python2.7/site-packages/rpyc/core/service.pyc in_u___getattr____(self,name)
119返回自我。\u缓存[名称]
120 def_uuugetattr_uuu(self,name):
-->121返回自我[姓名]
122
123级奴隶服务(服务):
/usr/lib/python2.7/site-packages/rpyc/core/service.pyc在u_getitem_u__(self,name)中
116 name=“.”。加入(名称)
117如果名称不在self.\u缓存中:
-->118 self.\uuuu缓存[名称]=self.\uuu获取模块(名称)
119返回自我。\u缓存[名称]
120 def_uuugetattr_uuu(self,name):
/usr/lib/python2.7/site-packages/rpyc/core/netref.pyc在调用中(_self,*args,**kwargs)
194定义调用(_self,*args,**kwargs):
195 kwargs=元组(kwargs.items())
-->196返回syncreq(_self,conss.HANDLE,args,kwargs)
197 uuuu调用uuuu.uuuuuu文档uuuuuuu=doc
198回叫__
/syncreq中的usr/lib/python2.7/site-packages/rpyc/core/netref.pyc(代理,处理程序,*args)
69 raise REFERENCERROR('弱引用对象不再存在')
70 oid=object.\uuuuuuuGetAttribute\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
--->71返回conn.sync_请求(处理程序、oid、*args)
72
73 def asyncreq(代理、处理程序、*args):
/同步请求中的usr/lib/python2.7/site-packages/rpyc/core/protocol.pyc(self,handler,*args)
439 isexc,obj=self.\u sync\u replays.pop(seq)
440如果isexc:
-->441升起obj
442其他:
443返回obj
ImportError:没有名为pywin32的模块
=========远程回溯(1)=========
回溯(最近一次呼叫最后一次):
文件“C:\Python27\lib\site packages\rpyc\core\protocol.py”,第305行,在调度请求中
res=self.\u处理程序[handler](self,*args)
文件“C:\Python27\lib\site packages\rpyc\core\protocol.py”,第535行,在\u handle\u调用中
返回self.\u local\u objects[oid](*args,**dict(kwargs))
文件“C:\Python27\lib\site packages\rpyc\core\service.py”,第163行,在exposed\u getmodule中
返回uuu导入(名称,无,无,“*”)
ImportError:没有名为pywin32的模块

有什么想法吗?

win32api
等都是顶级导入。项目名称为PyWin32。感谢@eryksun的回复,但它仍然不起作用。我得到:ImportError:与一些基本的标准模块(如OS:In[11]:conn.modules.OS Out[11]:相比,没有名为win32api的模块:您能在交互式登录中导入win32api吗?是的,我能。当我从本地iPython导入它时,它就像一个符咒一样工作,但远程失败。在本地iPython的情况下,什么是
win32api.\uu文件\uu
?在远程情况下,此目录是否在
sys.path
中?
In [7]: conn.modules.pywin32
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-7-31ec7f3bb520> in <module>()
----> 1 conn.modules.pywin32

/usr/lib/python2.7/site-packages/rpyc/core/service.pyc in __getattr__(self, name)
    119         return self.__cache[name]
    120     def __getattr__(self, name):
--> 121         return self[name]
    122 
    123 class SlaveService(Service):

/usr/lib/python2.7/site-packages/rpyc/core/service.pyc in __getitem__(self, name)
    116             name = ".".join(name)
    117         if name not in self.__cache:
--> 118             self.__cache[name] = self.__getmodule(name)
    119         return self.__cache[name]
    120     def __getattr__(self, name):

/usr/lib/python2.7/site-packages/rpyc/core/netref.pyc in __call__(_self, *args, **kwargs)
    194         def __call__(_self, *args, **kwargs):
    195             kwargs = tuple(kwargs.items())
--> 196             return syncreq(_self, consts.HANDLE_CALL, args, kwargs)
    197         __call__.__doc__ = doc
    198         return __call__

/usr/lib/python2.7/site-packages/rpyc/core/netref.pyc in syncreq(proxy, handler, *args)
     69         raise ReferenceError('weakly-referenced object no longer exists')
     70     oid = object.__getattribute__(proxy, "____oid__")
---> 71     return conn.sync_request(handler, oid, *args)
     72 
     73 def asyncreq(proxy, handler, *args):

/usr/lib/python2.7/site-packages/rpyc/core/protocol.pyc in sync_request(self, handler, *args)
    439         isexc, obj = self._sync_replies.pop(seq)
    440         if isexc:
--> 441             raise obj
    442         else:
    443             return obj

ImportError: No module named pywin32

========= Remote Traceback (1) =========
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\rpyc\core\protocol.py", line 305, in _dispatch_request
    res = self._HANDLERS[handler](self, *args)
  File "C:\Python27\lib\site-packages\rpyc\core\protocol.py", line 535, in _handle_call
    return self._local_objects[oid](*args, **dict(kwargs))
  File "C:\Python27\lib\site-packages\rpyc\core\service.py", line 163, in exposed_getmodule
    return __import__(name, None, None, "*")
ImportError: No module named pywin32