Maya Python创建和使用压缩包?

Maya Python创建和使用压缩包?,python,scripting,zip,maya,Python,Scripting,Zip,Maya,有人能确切地描述一下如何在Maya中创建和执行python zip包吗?很多关于这方面的教程和问题都会跳到中间,并假设有一定的知识。我需要一个简单的例子作为起点 Folder/ scriptA.py scriptB.py scriptC.py ScriptA: Import ScriptB Import ScriptC Create zip of Folder In Maya Code to run Folder as if not zipp

有人能确切地描述一下如何在Maya中创建和执行python zip包吗?很多关于这方面的教程和问题都会跳到中间,并假设有一定的知识。我需要一个简单的例子作为起点

Folder/
    scriptA.py
    scriptB.py
    scriptC.py

ScriptA:
    Import ScriptB
    Import ScriptC

Create zip of Folder

In Maya
    Code to run Folder as if not zipped
    ScriptA.foo()

在文件夹中,我们有三个脚本。ScriptA引用了另外两个。我用winrar之类的程序压缩文件夹。在maya中,我希望从该zip加载文件,就像其中的文件是位于脚本文件夹中的任何其他模块一样(最好不要解压缩)。我该怎么做

python路径上的任何zip都被视为文件夹,因此:

import sys
sys.path.append('path/to/archive.zip')

import thingInZip
thingInZip.do_something()
唯一的问题是深度:zipImporter不需要嵌套的目录结构。所以这没关系:

 ziparchive.zip
   +--- module1.py
   +----module2.py
   +----package_folder
     |
     +-- __init.__py
     +-- submodule1.py
     +-- submodule2.py
     +--- subpackage
       |
       +- __init__.py
但这不是:

ziparchive.zip
 + --- folder
    +- just_a_python_file_not_part_of_a_package.py
此外,
站点
模块无法在zip中添加路径。有一个解决办法。您可能还需要注意sys.path的顺序:您要确保知道您是从压缩文件还是从磁盘上的松散文件工作

顺便说一句,只压缩.pyc文件而不是整个文件可以节省空间


PS注意在
sys.path.append
中使用左斜杠:必须对其进行转义
\
——右斜杠在windows和*ix上都有效,但maya正在获取pyc文件。在我删除pyc之后,它就不会加载了。我在里面有一个叫做Timeline的模块,我想调用的函数是timeliner。如果我执行上述操作并尝试Timeline.timeliner(),则不会得到名为Timeline的模块。如果您看到pyc,则可能意味着您的工作文件(在zip之外)位于路径上。您需要确保您的zip具有所需的内容,并如上所述插入sys.path。您可以使用'sys.path.insert(0,'path/to/zip.zip')确保zip位于松散文件之前这是Maya 2011+是吗?不老吗?是的。Pyc是从以前的编译中预先存在的,我在第一次尝试此方法时忽略了它。脚本看起来很有效,但当我更新脚本时,什么都没有改变,我才意识到它就在那里。我把它拆了,现在试着打开拉链,但运气不好。你说sys.path是什么意思?我把zip文件放到我的documents/maya/scripts/文件夹中,我以前在那里运行脚本。我猜这些zip需要转到一个特定的文件夹sys.path?请参阅示例代码:导入
sys
模块,并将zip文件的完整路径添加到变量
sys.path
,这是一个列表