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

如何配置setup.py实现包内.py文件无需包名前缀直接相互导入

解决方案

你可以通过调整setup.py的对应参数直接满足需求,两种可行配置方式如下:

  • 方式1:将package_A下所有模块直接暴露到顶层
    修改setup.py为以下内容:
from setuptools import find_packages, setup

setup(
    packages=[""],
    package_dir={"": "src/package_A"},
)

该配置会把src/package_A目录作为顶层包路径安装,安装后可以直接用from file_1 import function的方式导入对应内容。

  • 方式2:显式指定需要暴露的独立模块
    如果只需要暴露部分py文件作为顶层模块,可以使用py_modules参数:
from setuptools import setup

setup(
    py_modules=["file_1", "file_2"],
    package_dir={"": "src/package_A"},
)

额外兼容处理

如果需要保证package_A作为独立子模块运行时也不会出现导入错误,可以在package_A的__init__.py中添加路径动态追加逻辑:

import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.absolute()))

该逻辑会在导入package_A时自动把当前目录加入Python搜索路径,无论package_A是作为项目子模块还是独立运行,都可以直接导入同目录下的其他py文件。

注意:不建议在生产环境大量使用顶层模块暴露的方式,容易和其他第三方包产生命名冲突。

内容的提问来源于stack exchange,提问作者This-is-patriiick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:15:02