这是我的Maya.env
λ cat C:\Users\roroco\Documents\maya\2018\Maya.env
MAYA_SCRIPT_PATH=C:/Users/roroco/OneDrive/maya/script
MAYA_PLUGIN_IN_PATH=C:/Users/roroco/OneDrive/maya/plugin
我确定我的脚本存在:
λ cat C:\Users\roroco\OneDrive\maya\script\ro.py
def init():
print("prpr")
在Maya脚本编辑器中,我的脚本目录存在于MAYA_PATH_DIR中
getenv MAYA_SCRIPT_PATH;
// Result: C:/Users/roroco/Documents/maya/projects/default/scripts;C:/Users/roroco/OneDrive/maya/script;C:/Users/roroco/Documents/maya/2018/scripts;C:/Users/roroco/Documents/maya/scripts;C:/Users/roroco/Documents/maya/2018/presets;C:/Users/roroco/Documents/maya/2018/prefs/shelves;C:/Users/roroco/Documents/maya/2018/prefs/markingMenus...
但是当我在脚本编辑器中import ro
时,它会引发:
# Error: ImportError: file <maya console> line 1: No module named ro #
我希望我可以编写Maya脚本并自动同步到onedrive,该怎么办 我不明白maya doc说我可以设置MAYA_SCRIPT_PATH为什么不起作用
答案 0 :(得分:0)
我的tmp解决方案是在maya启动脚本中添加我的script_dir
在C:\ Users \ roroco \ Documents \ maya \ scripts \ userSetup.py中,添加以下代码:
import imp
import os
imp.load_source("", "c:/users/" + os.environ["USERNAME"] + "/OneDrive/maya/script/userSetup.py")
并在my_script_dir / userSetup.py中将my_script_dir添加到sys.path
import sys
import os
ro_script = os.path.dirname(__file__)
if ro_script not in sys.path:
sys.path.insert(0, ro_script)
答案 1 :(得分:0)
您应该能够使用sys.path.insert
或sys.path.append
动态地将python路径添加到正在运行的maya中。您不需要做任何比这更复杂的事情了;如果脚本在sys路径上,则应该是可导入的。
对于您想要做的一个非常普通且干净的解决方案,是使用maya模块。模块将允许您追加到常用的搜索目录,并且它们支持网络共享-因此,您将添加模块(在maya modules路径中)并将其脚本目录指向onedrive。模块也可以有自己的userSetup.pys
,这对于保持代码与在特定计算机上运行的任何其他程序之间的清晰分隔非常有用。
答案 2 :(得分:0)
您不必通过userSetup.py
动态添加路径。
确保在PYTHONPATH
中包含Maya.env
:
PYTHONPATH=C:\Users\roroco\OneDrive\maya\script
检查我的Windows家庭设置,我在Maya.env
中使用反斜杠,因此您可以查看切换是否有帮助。无需检查MAYA_PATH_DIR
,而是检查您的sys.path
来查看目录是否存在。所有Python模块都需要位于以下目录之一中才能导入:
import sys
for p in sys.path:
print p
您还可以将路径复制并粘贴到os.path.exists
,以确认它确实存在。有时,这是正确的路径,但斜线会成功,因此无法正确解决。