2017-10-28 101 views
4

源于蟒蛇documentation描述导入系统,存在以下(重点由我做):Python包不是从文件系统

[...]你可以把包作为一个目录的文件系统和模块作为目录中的文件,但不要从字面上理解这个类比,因为包和模块不需要源自文件系统。 [...]

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

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

+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! 
+0

是的,我读过关于从zip文件导入包的信息。我猜可以创建自定义模块加载器,以便加载模块,而不管它们的来源。这是正确的吗? – user42768

+0

是的!它们不需要存在于文件系统中。 –