我正在尝试使我的git存储库pip可安装。为此,我正在重组回购协议,以遵循正确的惯例。通过查看其他存储库,我的理解是,我应该将所有源代码放在与存储库名称同名的包中。E、 如果我的存储库名为myrepo
,那么源代码将全部放入一个名为myrepo
的包中。在
为了便于阅读,我的存储库中有一个连字符:例如my-repo
。所以如果我想为它制作一个同名的包,里面也会有一个连字符。In this tutorial它对python包名说“不要使用连字符”。不过,我看到了一些成熟的包,比如scikit-learn
,它们的名称中有连字符。不过,我注意到的一点是,在scikit-learn
repo中,包名与repo名不同,取而代之的是sklearn
。在
我把以上问题归结为以下几个问题:
scikit-learn
的包名是sklearn
,那么当我安装它时,为什么我是pip install scikit-learn
而不是{
为了回答你的第一点,让我把my answer换成另一个问题。在
造成误解的最大原因是“套餐”一词严重超载。游戏中有4个不同的名称-存储库的名称、用于开发的目录的名称(包含}和其他可导入模块的名称,即PyPI上的分发名称。通常这4个是相同或相似的,但这不是必需的。在
setup.py
)的目录名、包含{存储库和开发目录的名称可以是任意的,它们的名称不起任何作用。当然,恰当地命名它们是方便的,但这只是方便而已。在
包含Python文件的目录的名称要导入的包。一旦包被命名为导入,名称通常会被卡住,无法更改。在
发行版的名称在PyPI上提供了一个页面和分发文件的名称(源分发、eggs、wheels)。它是人们在
setup(name='distribution')
调用中输入的名称。在我来举个具体的例子。我一直在维护一个名为CheetahTemplate的模板库。我在名为} 的名称。顶层模块是^{} ,因此可以使用};这意味着我有一个目录{}。在
cheetah3/
的开发目录中开发它。PyPI上的分发名为Cheetah3;这是我放入^{import Cheetah.Template
或{2的答案是:在存储库名称和PyPI分发名中可以使用破折号,但在包(具有
__init__.py
文件的目录)和模块(.py
文件)名称中不能使用破折号,因为您不能用Pythonimport xy-zzy
编写,这将是减法和SyntaxError
。在第三点:站点和存储库的名称是
scikit-learn
,以及distribution name,但是可导入的包(带有__init__.py
的顶层目录)是sklearn。在pep8与这个问题无关,因为它不讨论分发,只讨论可导入的包和模块。在
相关问题 更多 >
编程相关推荐