在python存储库名称和包nam中使用连字符/破折号

2024-04-18 14:49:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使我的git存储库pip可安装。为此,我正在重组回购协议,以遵循正确的惯例。通过查看其他存储库,我的理解是,我应该将所有源代码放在与存储库名称同名的包中。E、 如果我的存储库名为myrepo,那么源代码将全部放入一个名为myrepo的包中。在

为了便于阅读,我的存储库中有一个连字符:例如my-repo。所以如果我想为它制作一个同名的包,里面也会有一个连字符。In this tutorial它对python包名说“不要使用连字符”。不过,我看到了一些成熟的包,比如scikit-learn,它们的名称中有连字符。不过,我注意到的一点是,在scikit-learnrepo中,包名与repo名不同,取而代之的是sklearn。在

我把以上问题归结为以下几个问题:

  1. 打包回购时,存储库的名称和包的名称之间的关系是什么?当名字不匹配时,有什么需要注意的吗?在
  2. 包名中可以有连字符吗?在存储库名称中呢?在
  3. 如果scikit-learn的包名是sklearn,那么当我安装它时,为什么我是pip install scikit-learn而不是{}?在

Tags: pipingit名称协议源代码myrepo
1条回答
网友
1楼 · 发布于 2024-04-18 14:49:18

为了回答你的第一点,让我把my answer换成另一个问题。在

造成误解的最大原因是“套餐”一词严重超载。游戏中有4个不同的名称-存储库的名称、用于开发的目录的名称(包含setup.py)的目录名、包含{}和其他可导入模块的名称,即PyPI上的分发名称。通常这4个是相同或相似的,但这不是必需的。在

存储库和开发目录的名称可以是任意的,它们的名称不起任何作用。当然,恰当地命名它们是方便的,但这只是方便而已。在

包含Python文件的目录的名称要导入的包。一旦包被命名为导入,名称通常会被卡住,无法更改。在

发行版的名称在PyPI上提供了一个页面和分发文件的名称(源分发、eggs、wheels)。它是人们在setup(name='distribution')调用中输入的名称。在

我来举个具体的例子。我一直在维护一个名为CheetahTemplate的模板库。我在名为cheetah3/的开发目录中开发它。PyPI上的分发名为Cheetah3;这是我放入^{}的名称。顶层模块是^{},因此可以使用import Cheetah.Template或{};这意味着我有一个目录{}。在

2的答案是:在存储库名称和PyPI分发名中可以使用破折号,但在包(具有__init__.py文件的目录)和模块(.py文件)名称中不能使用破折号,因为您不能用Python import xy-zzy编写,这将是减法和SyntaxError。在

第三点:站点和存储库的名称是scikit-learn,以及distribution name,但是可导入的包(带有__init__.py的顶层目录)是sklearn。在

pep8与这个问题无关,因为它不讨论分发,只讨论可导入的包和模块。在

相关问题 更多 >