以下是我的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
(由于非法字符而无法导入),而不是我想要的包models
。我做错了什么?已经阅读了setuptoolsQuickstart和各种相关问题,但仍然感到困惑
所以这个问题只是因为我的误解,但我想我应该在回答中澄清一下,因为这里有一个区别(对我来说)与
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
(我想要的行为)相关问题 更多 >
编程相关推荐