Python包不是源自文件系统

时间:2017-10-28 20:23:57

标签: python dynamic python-import

在描述导入系统的python documentation中,有以下内容(由我强调):

  

[...]您可以将软件包视为文件系统上的目录,将模块视为目录中的文件,但不要太过于字面,因为软件包和模块不需要来自文件系统即可。 [...]

在文件系统中分别存储与文件和文件夹不对应的模块和软件包有哪些选项?

read关于从zip档案加载模块和包的可能性。这是引用段落引用的可能选项之一吗? 还有其他这样的选择吗?

1 个答案:

答案 0 :(得分:1)

这是您可以考虑包和模块的方式,但包/模块不是文件系统中的目录/文件。

您可以将包/模块存储在zip文件中,然后使用zipimport加载它。

您可以从字符串变量加载模块:

import imp

code = """
def test():
    print "function inside module!"
    """

# give module a name
name = "mymodule"
mymodule = imp.new_module(name)
exec code in mymodule.__dict__

>>> mymodule.test()
function inside module!