gpt4 book ai didi

python - 如何使用 Python 的 zipimport 从包中访问模块?

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:45 25 4
gpt4 key购买 nike

我使用 python 的 paster 编写了一个简单的 Python 包,我的包具有以下目录结构:

pkg/
__init__.py
module1.py
subpackage/
__init__.py
module2.py

init.py 文件是空白的,module1.py 包含一个从 module2.py 导入内容的函数。我安装了这个包,我可以在 python 提示符下调用 module1.py 中的函数:

import pkg.module1

我转到安装包的位置 (/usr/lib/python2.7/dist-packages/pkg/) 并压缩 pkg 目录:

zip -r pkg.zip pkg/

我尝试使用 zipimport 从 python 提示符访问模块:

import zipimport
importer = zipimport.zipimporter('pkg.zip')
importer.find_module('pkg')
# <zipimporter object "pkg.zip">
importer.load_module('pkg')
# <module 'pkg' from 'pkg.zip/pkg/__init__.pyc'>
importer.is_package('pkg')
# True
pkg = importer.load_module('pkg')
# trying to call a function in module 1 called fcn1
pkg.module1.fcn1()
#Traceback (most recent call last):
#File "<stdin>", line 1, in <module>
#AttributeError: 'module' object has no attribute 'module1'
pkg.module1
#Traceback (most recent call last):
#File "<stdin>", line 1, in <module>
#AttributeError: 'module' object has no attribute 'module1'

关于如何访问 module1 的任何想法?谢谢。

最佳答案

尝试以下操作:

import sys
sys.path.append('./pkg.zip') # Or path to pkg.zip
import module1

module1.fcn1()

这将为您使用 zipimport

我认为您可能需要在它的 init.py 文件中列出模块的公共(public)部分,看看 PEP 273

关于python - 如何使用 Python 的 zipimport 从包中访问模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19333956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com