You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将主目录外的global_vars.py纳入folder_2的Python Wheel包?

针对Wheel包包含global_vars.py的修改方案

一、info.yaml的修改

如果info.yaml仅存储包的元数据(如版本、作者、描述等),无需修改该文件。只有当你原本在info.yaml中定义了packages、py_modules这类文件列表配置时,才需要添加global_vars的对应条目,否则保持原样即可。

二、setup.py的修改

要将folder_1下的global_vars.py纳入包中,有两种规范的实现方式,根据你的需求选择:

方式1:调整文件结构(推荐)

直接将global_vars.py移动到folder_2目录下,同时确保folder_2、folder_3目录下都存在空的__init__.py文件(用于标识Python包)。此时setuptools的find_packages()会自动识别并包含这个模块,用户可以通过import folder_2.global_vars导入。setup.py只需保持原有从info.yaml读取元数据的逻辑,无需额外修改。

方式2:保留原文件位置

如果必须让global_vars.py留在folder_1,需要修改setup.py的配置,让setuptools能找到并打包这个文件:

  1. 先确保setup.py中导入必要模块并读取info.yaml:
import os
import yaml
from setuptools import setup, find_packages

# 读取info.yaml中的元数据
with open(os.path.join("folder_3", "info.yaml"), "r") as f:
    pkg_info = yaml.safe_load(f)
  1. 修改setup()函数的参数,添加py_modules和package_dir配置:
setup(
    name=pkg_info["name"],
    version=pkg_info["version"],
    # 自动识别folder_2下的子包(如folder_3)
    packages=find_packages(),
    # 指定要打包的单独模块文件
    py_modules=["global_vars"],
    # 告诉setuptools去上级目录(folder_1)找global_vars.py
    package_dir={"": "../"},
    # 其他元数据从info.yaml读取(如author、description等)
    author=pkg_info["author"],
    description=pkg_info["description"],
    # 其他必要参数...
)
  1. 验证效果
    生成Wheel包并安装后,测试导入:
# 生成包
python setup.py bdist_wheel
# 安装包
pip install dist/[你的包名]-[版本号]-py3-none-any.whl
# 测试导入
python -c "import folder_2.folder_3; import global_vars; print('导入成功')"

注意事项

  • 方式2中,用户导入global_vars时是直接import global_vars,而非import folder_2.global_vars,如果需要后者,还是推荐方式1的结构调整。

内容的提问来源于stack exchange,提问作者programmer_04_03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:42:03