2017-04-26 147 views
1

我为我的团队创建了一个maya python工具链。一切运作良好,只是在一台机器上我似乎有问题。我缩小到打印命令。像这家名为 “temp.py” 测试库:(!只有一台计算机上)玛雅Python:IOError:[Errno 9]错误的文件描述符

import os 
# from pymel.core import * 

print "Hello" 

import temp 

它产生这样的输出导入之后:

// Error: 9 
# Traceback (most recent call last): 
# File "<maya console>", line 1, in <module> 
# File "C:\maya_scripts\temp.py", line 4, in <module> 
# print "Hello" 
# IOError: [Errno 9] Bad file descriptor // 

我已经尝试Maya版本2016,2016.5和2017。所有相同的结果。 作为独立的Python 2.5还没有得到这个问题。对我来说,这听起来像是某种配置问题,但是它在3个不同的maya安装中的表现也是一样的,所以删除这些prefs也没有帮助。

+0

你正在运行GUI maya或mayapy.exe standalonw? – theodox

+0

我在Maya应用程序本身运行它,我在maya脚本编辑器控制台中得到这个错误。 – clawjelly

回答

-1

的错误是从你的模块,你可能会覆盖打印功能

玛雅2016蟒蛇2.7.6和Maya 2017年在Python 3.X 2017年您必须使用打印( “”)

+0

这是不正确的:2017年是2.7.6:https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/Maya/files/GUID-C0F27A50-3DD6-454C -A4D1-9E3C44B3C990-htm.html – theodox

+0

是的,我知道这一点。这仅仅是一台机器上的特殊情况,只有在库中使用打印时(通过导入)。相同的代码适用于不同机器上的相同应用程序。在同一应用程序的3个不同版本上,它在纯机器上运行时会失败。 这是一个非常非常令人费解的行为。我唯一的想法atm是,一些脚本或插件正在改变stdout处理印刷的方式... – clawjelly

+0

theodox,你链接maya 2016文档,但你的权利,他们只是移动到pyside2和python似乎是2.7.11 :http://around-the-corner.typepad.com/adn/2016/08/compiler-versions-for-maya-2017。HTML – DrWeeny

1

很难知道这里发生了什么。不过,试试这个

import sys 
sys.__stdout__.write("hello") 
sys.__stdout__.write(str(sys.stdout)) 

然后检查你的输出窗口(听众)。在香草玛雅中,你会看到类似于

<maya.Output object at 0x00000217E827FC10> 

之后“你好”。如果您看到其他内容,则某些脚本尝试在此安装中劫持01​​。你可以可能通过创建一个名为MAYA_SKIP_USERSETUP_PY的环境变量,将其设置为1,并重新启动 - 它应该停止任何脚本从自动加载调皮中解决它。

应该将其重置你要找的东西:

import maya.utils as utils 
sys.stdout = utils.Output() 

但是你需要通过机器上的脚本来梳理并找出谁与sys.stdout搞乱你的背部

背后