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

如何将Python项目文件置于test_py_project顶级命名空间?

搞定Python项目命名空间问题的方法

1. 调整目录结构

把原来的src目录改成test_py_project,将common.py、foo1.py、foo2.py全部移进去,同时在这个新目录里添加一个空的__init__.py文件——Python需要这个文件识别目录为包。最终的目录结构应该是:

test_py_project/
├── setup.py
└── test_py_project/
    ├── __init__.py
    ├── common.py
    ├── foo1.py
    └── foo2.py

2. 修改setup.py配置

更新setup.py里的打包参数,让它正确识别命名空间包。给你两种可行的写法:

  • 自动识别包的写法:
from setuptools import setup, find_packages

setup(
    name="test_py_project",
    version="0.1",
    packages=find_packages(),
    package_dir={"": "."},
)
  • 手动指定包的写法:
from setuptools import setup

setup(
    name="test_py_project",
    version="0.1",
    packages=["test_py_project"],
    package_dir={"test_py_project": "test_py_project"},
)

3. 修正模块内部的导入路径

如果foo1.py、foo2.py里之前导入了common.py,现在要改成包内的导入方式:

  • 相对导入(包内部推荐使用):
    from .common import 你需要的函数或类
    
  • 绝对导入:
    from test_py_project.common import 你需要的函数或类
    

4. 重新安装项目

执行以下命令重新安装项目:

python3 setup.py install --user

或者用pip更便捷:

pip install --user .

完成以上步骤后,你就可以通过import test_py_project.foo1或者from test_py_project import foo2来导入模块,模块会完全处于test_py_project命名空间下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:30:51