如何让PyPI包dcode.py支持以import dcode导入?
解决PyPI包名含
.时的导入别名问题 核心思路
和discord.py、py-cord的实现逻辑一致:PyPI包名(用于pip install)和Python实际导入的包名可以完全分离——你只需保留PyPI上的包名为dcode.py,但把项目里的实际包目录命名为dcode即可。
具体步骤
调整项目目录结构
你的项目根目录必须遵循这个结构(关键是实际导入的包目录为dcode):dcode.py/ ├── dcode/ │ ├── __init__.py # 必须存在,空文件也可 │ └── 你的业务代码模块.py ├── pyproject.toml ├── README.md └── LICENSE你之前的导入错误,本质是项目结构错误——没有创建正确的
dcode目录,反而用了和PyPI包名相关的dcode.py或dcode_py目录,导致Python找不到可导入的模块。保留
pyproject.toml的包名设置
无需修改pyproject.toml里[project]下的name = "dcode.py",这个名称是给PyPI用的,用户执行pip install dcode.py时会识别它。重新构建并上传包
安装工具后重新打包上传到PyPI:pip install build twine python -m build twine upload dist/*验证导入效果
用户安装包后,直接执行import dcode就能正常导入你的模块,无需带.py后缀。
补充说明
你之前尝试import dcode_py失败,是因为PyPI处理含.的包名时,会临时将.替换为_作为安装目录名,但这不是实际的导入包名——真正决定导入名称的是你项目里的包目录名,所以必须确保目录名是dcode。
内容的提问来源于stack exchange,提问作者Dylan Rogers
相关产品推荐
相关产品推荐

