2017-04-26 56 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搞亂你的背部

背後
相關問題