微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Setuptools 安装库而不是它的包

如何解决Setuptools 安装库而不是它的包

这是我的 tree(简化版):

└── internal_models
    ├── models
    │   ├── __init__.py
    │   └── api
    │       ├── my_code.py
    └── setup.py

还有我的setup.py

from setuptools import setup

setup(name='internal-models',version='0.0.2',description='models package',packages=["models"],zip_safe=False,install_requires=[])

当我使用 pip install .python setup.py build 安装时,Setuptools 会安装 internal-models(由于非法字符而无法导入),而不是我想要的包,{{1} }.我究竟做错了什么?已阅读 setuptools Quickstart 和各种相关问题,但仍然感到困惑。

Minimal reproducible example

解决方法

所以这个问题只是由于我的误解,但我想我会在答案中澄清它,因为这里有一个区别,从 Setuptools 文档中(对我来说)不太清楚。

>

setup.py/setup.cfg 中定义的发行版名称是整个包的名称,它将保存在您环境的site-packages目录中,由pip freeze。它不可导入。有效名称在 PEP 508 中定义。例如,它们可能包含破折号,在导入包中虽然不违法,但 PEP 8 不鼓励这样做。(它 can't be imported in the standard way,因为 Python 将破折号解释为减号.)

setup.py/setup.cfg 中定义的导入包(或模块)是您可以在 Python 中导入的内容。因此,就我而言,internals-models 正在安装,但我使用 models 包的方式是通过 import models(我想要的行为)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。