zipimport python里面的真实导入

时间:2015-07-15 21:57:08

标签: python importerror

我的应用程序结构如下:

|-- main.py
|-- lib.py
|-- scripts.zip
|   |-- run.conf
|   |-- script1.py
|   |-- more scripts...
|   |--
|   |-- base.py

main.py导入script1.py,它有一个继承自base.py

的类

main.py代码:

module_name = 'script1'
import zipimport
            importer = zipimport.zipimporter('scripts.zip')  
            if module_name not in sys.modules:
                importer.load_module(module_name)

script1.py代码:

from . import base

class doesstuff(base.scriptbase):

    def __init__:
        pass

当main.py尝试使用zipimport导入script1.py时,会发生这种情况:

Traceback (most recent call last):
  File "main.py"
    importer.load_module(module_name)
  File "scripts.zip/script1.py", line 1, in <module>
SystemError: Parent module '' not loaded, cannot perform relative import

首先我认为这是因为zipimport基本上将scripts.zip放在系统路径中,但是当我修改script1.py

script1.py代码:

import base #zip file should be in the system path as a base

class doesstuff(base.scriptbase):

    def __init__:
        pass

我明白了:

Traceback (most recent call last):
  File "main.py"
    importer.load_module(module_name)
  File "scripts.zip/script1.py", line 1, in <module>
ImportError: No module named 'base'

显然,它不是系统路径的重要组成部分。 所以我不确定如何让zip文件中的一个脚本导入一个自己的脚本。我已经尝试了以上几种变体,而且几乎所有变体都以Systemerror结束。

我该怎么做?

0 个答案:

没有答案