如何不使用绝对路径直接导入Wheel文件中的依赖模块
方案1:修改打包配置,直接暴露helpers为顶层模块(最优方案)
修改你项目中的setup.py,调整包映射规则,打包时直接将package/utils下的模块作为顶层模块发布:
from setuptools import setup setup( name="your_project_name", version="1.0.0", # 配置顶层包对应的文件路径 package_dir={"": "package/utils"}, # 声明需要打包的顶层模块 py_modules=["helpers"], # 原有其他配置(比如依赖、作者信息等)保持不变 package_data={ "": ["config.yml"] # 保留原有的配置文件打包规则 } )
重新构建Wheel后安装,即可直接使用import helpers导入模块。
方案2:不调整目录结构,通过模块映射实现导入别名
如果需要保留原有的包结构不变,可以在package目录下的__init__.py中添加如下代码:
from .utils import helpers import sys # 将helpers模块注册到顶层模块命名空间 sys.modules["helpers"] = helpers
重新打包Wheel后,只要导入过一次package,就可以直接使用import helpers。
方案3:Glue作业侧临时适配(无需重新打包,适合临时测试)
如果不想修改Wheel包,可以在Glue作业代码的最开头添加如下代码,运行时手动注册模块别名:
import sys from package.utils import helpers sys.modules["helpers"] = helpers # 后续代码可直接导入helpers import helpers
内容的提问来源于stack exchange,提问作者Geetika
相关产品推荐
相关产品推荐

