【问题标题】:maya python subprocess errormaya python子进程错误
【发布时间】:2015-07-13 21:52:03
【问题描述】:

在 python 2.7 中,我尝试使用此代码从 Deadline 软件中获取数据。它从服务器返回一些数据...

import subprocess
path = 'C:/Program Files/Thinkbox/Deadline7/bin/'
p1 = subprocess.Popen([path + 'deadlinecommand.exe', 'pools'], stdout=subprocess.PIPE)
p1.communicate()

看看结果:

('none\r\npool_01\r\npool_02\r\npool_03\r\npool_04\r\npool_05\r\npoolhalf\r\n', None)

但是当我在 Maya 2014 中将该代码复制到 python 时出现错误:

p1 = subprocess.Popen(['path + 'deadlinecommand.exe', 'pools'], stdout=subprocess.PIPE)
# Error: WindowsError: file C:\PROGRA~1\Autodesk\maya2014\bin\python27.zip\subprocess.py line 826: 6 # 

运行此 exe 文件 - 是 dedline 通信的唯一选项。但它支付标准输出数据以及如何有必要退出。 subprocess 选项除了我还没有找到,但是如果有其他选项会很高兴尝试它们

还有其他人遇到过这个问题吗?奇怪的是,在 windows 中运行的纯 Python 2.7 中一切正常,并且没有 Maya 2014

我使用:

Windows 7 + Python 2.7.9

玛雅 2014 (Python 2.7.3)

【问题讨论】:

  • 也许我遗漏了一些东西,但 windows 分隔符是 '\' 而不是 '/',你试过 path = 'C:\Program Files\Thinkbox\Deadline7\bin\' 吗?跨度>
  • p1 = subprocess.Popen(['C:\\Program Files\\Thinkbox\\Deadline7\\bin\\deadlinecommand.exe', 'pools'], stdout=subprocess.PIPE) #错误:WindowsError: file C:\PROGRA~1\Autodesk\maya2014\bin\python27.zip\subprocess.py line 826: 6 #
  • 你在maya版本的变量路径前面多了一个引号——是在代码中吗:?

标签: python-2.7 subprocess stdout maya


【解决方案1】:

几天前我只是在尝试类似的事情,通过命令行提交程序连接到 Deadline 并获取

 # File "C:\Program Files\Autodesk\Maya2013\bin\python26.zip\subprocess.py", line 786, in _make_inheritable
 # WindowsError: [Error 6] The handle is invalid

Maya 2013.5 中的错误。找到了一种解决方法here 确实解决了这个问题是管道所有的句柄

p1 = subprocess.Popen([path + 'deadlinecommand.exe', 'pools'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)

希望对你有帮助。

【讨论】:

  • 你可能需要DEVNULL而不是PIPE,否则你可能会挂起子进程。
  • @JFSebastian 抱歉回复晚了,谢谢我不知道 DEVNULL 我很想知道子进程可能挂起的情况(到目前为止我还没有遇到过)我可以看看它在某个地方?
  • 子流程文档本身有重复的警告。您可以使用生成大量输出的子进程对其进行测试并亲自查看。
猜你喜欢
  • 1970-01-01
  • 2016-06-17
  • 2010-10-26
  • 2014-03-30
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
相关资源
最近更新 更多