【问题标题】:maya python call function from another py file来自另一个 py 文件的 maya python 调用函数
【发布时间】:2016-05-25 10:21:38
【问题描述】:

我有一个 python 脚本保存到文件中。

test1.py

import maya.cmds as cmds
import sys

def process():
    print 'working'

我需要在另一个 python 脚本中运行这个脚本中的函数,在 Maya 中。我有:

import sys
sys.path.append('J:\scripts\src\maya')

from test1 import process

test1.process()

但它给了我:

from test1 import process
# Error: ImportError: file <maya console> line 4: cannot import name process # 

我在这里做错了什么?

('import test1'没有报错,所以路径是正确的)。

【问题讨论】:

    标签: python maya


    【解决方案1】:

    解决方案:

    重新加载您的 test1 模块,我的猜测是您创建并导入了 test1 没有在里面 process 方法。要有效地重新加载一个模块,你不能只是重新导入它,你必须使用重新加载。

    reload(test1)
    from test1 import process
    

    其他观察:

    使用路径时使用原始字符串:

    在您的路径字符串之前添加rsys.path.append(r'J:\scripts\src\maya')

    Python Doc

    反斜杠()字符用于转义字符 否则有特殊含义,例如换行符,反斜杠本身, 或引号字符。可以选择为字符串文字添加前缀 带有字母“r”或“R”;这样的字符串称为原始字符串并使用 解释反斜杠转义序列的不同规则。

    检查您导入模块的方式:

    你写的,无效:

    from test1 import process
    test1.process()
    

    但你可以有任何一种方式:

    import test1 
    test1.process()
    

    或:

    from test1 import process
    process()
    

    总结一下这些是导入模块或包的方法:

    >>> import test_imports
    >>> from test_imports import top_package
    >>> from test_imports import top_module
    test_imports.top_module
    >>> from test_imports.top_package import sub_module
    test_imports.top_package.sub_module
    

    假设您具有以下层次结构:

    J:\scripts\src\maya # <-- you are here
    .
    `-- test_imports
        |-- __init__.py
        |-- top_package
        |   |-- __init__.py
        |   |-- sub_package
        |   |   |-- __init__.py
        |   |   `-- other_module.py
        |   |-- sub_module.py
        `-- top_module.py
    

    致谢Sam & Max blog(法语)

    【讨论】:

      【解决方案2】:

      首先你需要在系统路径中添加脚本位置路径。

      如果你把它做成一个 python 包,不要忘记添加 包目录中的__init__.py 文件。

      然后你可以执行以下代码。

      import sys
      path = r'J:\scripts\src\maya'
      if path not in sys.path:
          sys.path.append(path)
      
      import test1
      test1.process()
      

      【讨论】:

        猜你喜欢
        • 2016-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-27
        • 2021-08-30
        • 2020-08-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多