试图了解我们如何将这两个方面结合在一起
- 在本机文件系统中加载资源
- 打包成压缩文件
阅读有关 zipimport 的快速教程:http: //www.doughellmann.com/PyMOTW/zipimport/
我看到以下示例:
import sys
sys.path.insert(0, 'zipimport_example.zip')
import os
import zipimport
importer = zipimport.zipimporter('zipimport_example.zip')
module = importer.load_module('example_package')
print module.__file__
print module.__loader__.get_data('example_package/README.txt')
我认为 __file__ 的输出是“zipimport_example.zip/example_package/__init__.pyc”
需要从内部检查它的外观。
但是我们总是可以做这样的事情:
if ".zip" in example_package.__file__:
...
load using get_data
else:
load by building the correct file path
[编辑:]我试图更好地解决这个例子。
如果包被导入为压缩文件,那么会发生两件事
- __file__ 在其路径中包含“.zip”。
- __loader__ 在名称空间中可用
如果满足这两个条件,那么您可以在包中执行以下操作:
print __loader__.get_data(os.path.join('package_name','README.txt'))
否则模块已正常加载,您可以按照常规方法加载文件。