从zip导入python包

问题描述 投票:0回答:1

medium.com 文章中 有一节介绍如何使用代码访问存储在 ZIP 文件中的包:

import sys
sys.path.append("my_package.zip")
from my_package import my_code

为了测试这一点,我从

PyPi
下载了 optbinning 0.19.0 包,提取了所有文件,然后压缩了包含
__init__.py
文件的文件夹,并将我的文件命名为
optbinning_dwnl.zip

现在,如果我尝试使用代码加载文章中的包

import sys
import os 

os.chdir("C:\\my_path")
sys.path.append('optbinning_dwnl.zip')
from optbinning_dwnl import OptimalBinning

我收到错误:“ModuleNotFoundError:没有名为“optbinning_dwnl”的模块。但是,如果我尝试从解压缩的文件夹加载包,一切正常:

import sys
import os 

os.chdir("C:\\my_path")
sys.path.append('optbinning_dwnl')
from optbinning_dwnl import OptimalBinning

那么,是否可以从 zip 文件加载包?也许我做错了什么?

python package zip
1个回答
0
投票

要从 zip 文件导入包,您需要复制其中的完整包结构。类似结构的压缩包

optbinning_dwnl.zip
|
| -- __init__.py
| -- code.py

应改为

optbinning_dwnl.zip
|
| -- optbinning <dir>
     | -- __init__.py
     | -- code.py

导入包使用:

sys.path.append('optbinning_dwnla.zip')
from optbinning import OptimalBinning #name of folder in .zip, not a .zip itself
© www.soinside.com 2019 - 2024. All rights reserved.