如何通过Python-Poetry为Python包设置不同的导入名称?
实现Python包导入名与目录名不一致(Poetry环境)
方法一:通过Poetry配置与包重定向实现(推荐)
- 修改
pyproject.toml,将包的正式名称设为project,同时保留原目录路径:
[tool.poetry] name = "project" packages = [ { include = "python", from = "src" } ]
在
src/python/目录下创建project子目录,把原本放在src/python/下的所有代码文件(模块、子包等)移动到src/python/project/中。在
src/python/__init__.py中添加导出逻辑,让project成为可直接导入的顶层包:
from .project import *
完成后,用户在Python环境中执行import project即可访问原src/python/下的代码,目录结构依然保持src/python/不变。
方法二:通过模块别名快速实现(简单场景适用)
如果不想调整内部目录结构,可直接在src/python/__init__.py中添加别名逻辑:
import sys from . import * # 将project模块指向当前的python模块 sys.modules['project'] = sys.modules['python']
同时确保pyproject.toml中的包名称设为project:
[tool.poetry] name = "project" packages = [ { include = "python", from = "src" } ]
这种方法无需移动代码,但部分IDE的自动补全功能可能无法完美识别别名,适合简单项目快速使用。
内容的提问来源于stack exchange,提问作者dd-mck
相关产品推荐
相关产品推荐

