【问题标题】:Parent path Python Maya父路径 Python Maya
【发布时间】:2017-04-27 01:19:32
【问题描述】:

我有问题。我在 Maya 中有一个由 py​​thon 中的脚本生成的 GUI。 GUI 启动时会打开一个图像。要加载图像,我使用了以下代码行:

cmds.image( image='/home/s4915717/myName/artefacts/Images/UIheader02.png' )

您可以理解,如果我将脚本移动到另一台计算机上,我应该手动更改路径以正确加载图像。 有没有办法防止这种情况,让程序自己找到分配的图像?

我也试过用下面的方法:

import os
.
.
.
path = os.path.abspath('myName/artefacts/Images/UIheader02.png')
cmds.image( image=path )

它可以在我的电脑上运行,但如果我移到另一台电脑上它就不起作用(是的,我移动了整个文件夹以及 myName/artefacts 中的图像...

【问题讨论】:

    标签: python user-interface maya


    【解决方案1】:

    您的第一个路径是绝对的,您的第二个是相对的,这可能是您的问题的一部分。

    根据您的操作系统,Maya 在用户目录中查找图标的位置略有不同。有关 Maya 预期的位置,请参阅底部附近的 this page in the docs XBMLANGPATH 下方。如果您想指向一个特殊的位置(例如网络共享),还可以在启动 Maya 之前将XBMLANGPATH 设置为自定义位置。

    【讨论】:

      【解决方案2】:

      如果您的脚本是从 Maya 之外的文件调用的,您可以使用 __file__ 属性,该属性将为您提供使用它的文件的路径。然后,您可以使用它来构建您的路径。

      例如,如果您的脚本存储在“/home/s4915717/myName/artefacts”中,__file__ 将返回“/home/s4915717/myName/artefacts” 所以__file__ + '/Images/UIheader02.png' 会给你完整的路径:'/home/s4915717/myName/artefacts/Images/UIheader02.png'

      最安全的方法可能是将所有脚本存储在特定文件夹(例如 Maya 脚本文件)中,您可以从中构建相对路径。

      【讨论】:

        【解决方案3】:

        就像 Martin 提到的,您可以在脚本中使用 __file__,它会返回该脚本的完整路径。

        假设您将图像放在带有脚本的文件夹中,如下所示:

        +--my_script.py
        +--my_folder
        |    +--my_image.png
        

        您可以通过这种方式访问​​脚本中的图像:

        import os
        os.path.join(os.path.dirname(__file__), "my_folder", "my_image.png")
        

        假设您的文件夹位于一个目录中,如下所示:

        +--my_image.png
        +--my_folder
        |    +--my_script.py
        

        您可以改用os.path.abspath

        import os
        os.path.abspath(os.path.join(__file__, "..", "..", "my_image.png"))
        

        abspath 帮助解析".." 上一个目录。最后,您可以使用os.path.exists 来验证生成的路径是否确实存在。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-06-21
          • 1970-01-01
          • 2015-06-11
          • 2012-07-26
          • 1970-01-01
          • 2020-11-27
          • 1970-01-01
          相关资源
          最近更新 更多