2016-09-06 95 views
0

我嘗試了在幾個文檔頁面上解釋的所有方法。將用戶腳本文件夾添加到Maya

我修改了userSetup.mel文件,並將其與該代碼添加的文件夾:

string $s = `getenv MAYA_SCRIPT_PATH` + ";C:/MyScripts"; 
putenv "MAYA_SCRIPT_PATH" $s; 

它沒有工作。做putenv後,我也試圖做一個「rehash」。

我刪除userSetup.mel文件,並使用該另一個變量修改maya.env文件(因爲如果我這樣做是爲了MAYA_SCRIPT_PATH它打破瑪雅因爲壓倒一切它有)

USER_SCRIPT_PATH = C:/MyScripts 

任何作品當我在python選項卡上「導入文件夾」時。文件夾位於MyScripts文件夾內,並且存在所有文件的初始化文件。這不是python錯誤,這個文件夾在maya/scripts文件夾下工作。

爲什麼USER_SCRIPT_PATH在文檔中的任何地方都沒有被提及爲官方變量,並不清楚爲什麼這些作品中沒有任何信息。該文件夾在MEL上使用getenv在環境變量上結束,但代碼未加載。

回答

1

,你還可以添加喜歡的路徑:

import sys 
sys.path.append("C:/MyScripts") 

import my_module 
reload(my_module) 
my_module.run() 

如果你想瑪雅開始與這個ENV,你需要一個批處理文件(像阿諾或胡迪尼引擎或您自己的插件,所有的自定義ENV路徑)或者一個包裝器(更多用於maya-modeling或maya-fx等不同部門的不同maya設置的管道)。這是默認的ENV通道......

-MAYA_PLUG_IN_PATH 
-MAYA_MODULE_PATH 
-MAYA_SCRIPT_PATH 
-USER_SCRIPT_PATH 
-PYTHONPATH 
-MAYA_SHELF_PATH 
-XBMLANGPATH 
+0

任何想法爲什麼Maya使用USER_SCRIPT變量不會在userScripts或maya.env上添加任何新內容? – darkgaze

+0

什麼是導入os的結果/打印;打印os.environ [「USER_SCRIPT_PATH」]? –

+0

正確的一個。我添加的路徑。但內容不可用...並且有__init__文件。該文件夾在maya下的腳本文件夾中工作,但不在任何其他路徑中。 – darkgaze

0

在你找到userSetup.mel,你可以創建一個userSetup.py和瑪雅的開始做任何進口或執行任意腳本一樣的地方。

+0

關於.py文件的好處。但它沒有給我一個答案,因爲我問的是如何添加一個路徑,並讓瑪雅識別該文件夾上的文件。 – darkgaze

+0

在python中,你不需要添加全局路徑。你需要:導入folderScript,然後maya中的每個人都可以使用你的包。 – DrWeeny

+0

我在我的問題中說過導入不起作用。當我使用userSetup添加它時,它無法識別該路徑上的文件。也許用python將它添加到sys.path而不是MAYA_SCRIPT_PATH就足夠了? – darkgaze

0

您不想在Maya啓動並運行後設置環境變量,這就是您在Mel示例中所做的。您希望在maya開始查找實際腳本之前配置它。一般來說,大多數使用env vars的程序在啓動時都會讀取它們,並且無法識別程序運行時所做的更改 - 這就是爲什麼在Windows中,例如,您需要在GUI中更改env var後重新啓動dos窗口。

流行的方法是:從設置VAR .bat文件

  1. 啓動,然後運行假象。這可以讓你運行多個mayas,並根據需要以不同的設置並排運行
  2. 使用maya.env做到這一點;這將所有信息放到一個地方
  3. 對於python,請在userSetup.py中執行。 @AriGold的例子可以工作,但我更喜歡使用site模塊和site.addsitedir('path/to/someplace'),因爲您可以在目標目錄中使用.pth文件,使其儘可能複雜;有關第p個文件的更多詳細信息,請參見this question
  4. 使用Maya module它允許你在一個去設置,不僅腳本路徑,但所有其他路徑(位圖,插件等)>
+0

感謝您的回答。正如我所提到的,用maya.env做這件事不起作用。但我無法修改USER_SCRIPT_PATH,但這不起作用。如果我修改MAYA_SCRIPT_PATH,它將刪除該變量中的所有內容,顯然 – darkgaze

+0

userSetup也不起作用。問題在於Maya不認識變量。但這些都是瑪雅人內部的變數。正如你提到的,你如何改變maya開始之前的變量? – darkgaze

+0

這樣的東西,在BAT文件中: '''設置MAYA_SCRIPT_PATH =「c:/ path/to/scripts」 「C:/ program files/autodesk/maya/2016/bin/maya.exe」 ' ' 這是兩行,不能像這裏那樣格式化,雖然 – theodox

0

可用ENVS列表:http://www.toxik.sk/mayaenv-configuration-of-variables/

一件事要知道是任何操作系統環境變量接管了瑪雅環境變量。 這就是爲什麼我不依賴它,但使用UserSetup.py。

userSetup.py儘快在maya啓動時觸發(就在UI顯示之前)。

例如import pymel.core as pm將允許您在maya會話期間使用pm.whatever而無需導入。 要添加自定義Python路徑:

from os.path import expanduser 
home = expanduser("~/.maya") 
sys.path.append(os.path.join(home, "scripts")) 
sys.path.append(os.path.join(home, "python", "lib")) 

就像你會在Python中。這當然不適用於這些文件夾內的mel腳本,但Maya的python會意識到您定製的模塊和腳本。

現在,如果你想執行Maya命令從你userSetup你必須依靠maya.utils.executeDeferred()例如,我的一部分:

def AkelianStartup(): 

    ################### 
    # RENDER SETTINGS # 
    ################### 

    cmds.setAttr("defaultResolution.height", 720) # Frame Height 
    cmds.setAttr("defaultResolution.width", 1280) # Frame Width 
    cmds.setAttr("defaultResolution.deviceAspectRatio", 1.777) # Aspect Ratio 
    cmds.setAttr("defaultResolution.pixelAspect", 1) # Pixel Aspect 
    cmds.ToggleCurrentFrame() # turns on the current frame hud 

    ################## 
    # DEFAULT SHADER # 
    ################## 

    _defaultLambert() 

    ############### 
    # DEFAULT CAM # 
    ############### 

    _defaultPersp(85) 

############################################################## 
# defer running command until everything is loaded and ready # 
############################################################## 
utils.executeDeferred('AkelianStartup()') 

我知道答案比問題多一點... ¿這是否解決您的問題?

相關問題