Maya Python Create and Use Zipped Package?

≡放荡痞女 提交于 2020-01-03 04:19:04

问题


Can anyone describe exactly how someone can create and execute a python zip package in Maya? A lot of tutorials and questions regarding this jump into the middle and assume certain knowledge. I need a simple example as a starting point.

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()

In folder we have three scripts. ScriptA references the other two. I zip the folder with a program like winrar. In maya, I want to load from this zip as if the files inside were any other module sitting in my script folder (without unzipping preferably). How do I do this?


回答1:


Any zip on your python path is treated like a folder, so:

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

import thingInZip
thingInZip.do_something()

The only issue is depth: the zipImporter does not expect nested directory structures. So this is OK:

 ziparchive.zip
   +--- module1.py
   +----module2.py
   +----package_folder
     |
     +-- __init.__py
     +-- submodule1.py
     +-- submodule2.py
     +--- subpackage
       |
       +- __init__.py

But this is not:

ziparchive.zip
 + --- folder
    +- just_a_python_file_not_part_of_a_package.py

also the site module can't add paths inside a zip. There's a workaround here. You will also probably need to be careful about the order of your sys.path: you want to make sure you know if you are working from the zipped one or from loose files on your disk.

You can save space by zipping only the .pyc files instead of the whole thing, btw.

PS beware of using left slashes in sys.path.append : they have to be escaped \\ -- right slashes work on both windows and *ix



来源:https://stackoverflow.com/questions/32631910/maya-python-create-and-use-zipped-package

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!