Python包构建问题:如何保持foo父目录层级结构安装
解决方案
1. 调整文件目录结构
确保setup.py位于foo目录的同级目录,而非foo内部,正确目录结构如下:
project_root/ setup.py foo/ __init__.py bar_module_one/ __init__.py do_something_cool.py buzz_module_two/ __init__.py youre_lazy.py
2. 简化setup.py配置
删除多余的package_dir参数,find_packages()会自动从setup.py所在目录识别根包及其子包。修改后的setup.py内容:
from setuptools import find_packages, setup setup( version="0.1.0", name="foo", packages=find_packages(), )
3. 验证安装效果
在project_root目录下执行安装命令:
pip install .
安装完成后,即可使用目标导入方式:
from foo.bar_module_one.do_something_cool import yo
补充说明
foo/__init__.py可以是空文件,但必须存在,这是Python将该目录识别为包的必要条件。- 若需显式指定包,也可直接设置
packages=["foo", "foo.bar_module_one", "foo.buzz_module_two"],不过find_packages()会自动递归查找所有子包,更便捷。
内容的提问来源于stack exchange,提问作者dataviews
相关产品推荐
相关产品推荐

