<p>有三个惯例,你可能会觉得很困惑。</p>
<ol>
<li>标准</li>
</ol>
<p><a href="https://www.python.org/dev/peps/pep-0008/" rel="noreferrer">PEP8</a>定义了如何命名包和模块的标准:</p>
<blockquote>
<p>Modules should have short, all-lowercase names. Underscores can be used in the module name if it improves readability. Python packages should also have short, all-lowercase names, although the use of underscores is discouraged.</p>
</blockquote>
<ol start=“2”>
<li>事实上,没有人关心不使用下划线的建议</li>
</ol>
<p>即使是在PEP8中,许多包使用下划线,社区并不认为这是一个糟糕的做法。所以你会看到很多名字,比如<code>sqlalchemy_searchable</code>,等等</p>
<p>尽管您可以创建一个名称与包名称不匹配的文件夹,但这样做通常是一个坏主意,因为这样会使事情更加混乱。</p>
<p>所以你通常会在文件夹中使用所有带下划线的小写名称。</p>
<ol start=“3”>
<li>pypi上的包命名</li>
</ol>
<p>安装包时包的名称不需要与在pypi上发布包的名称相匹配(用于<code>pip</code>安装的源)。<code>pypi</code>上的包通常使用连字符而不是下划线命名。
e、 g.<a href="https://pypi.org/project/Flask-Cors/" rel="noreferrer">flask-cors</a>,安装程序包<code>flask_cors</code>。</p>
<p>但是,您会注意到,如果您继续这个示例,那么<a href="https://github.com/corydolphin/flask-cors" rel="noreferrer">flask-cors's GitHub repo</a>定义了<code>flask_cors/</code>目录中的包代码。这是常态。</p>
<p>但是它有点混乱,因为<code>pip</code>包安装不区分大小写,并且对下划线和连字符的处理是等效的。所以<code>Flask-Cors</code>、<code>fLASK_cOrs</code>等都是“等价的”。
就我个人而言,我不喜欢玩这种游戏——我建议在pypi上用所有小写字母和连字符命名包,这是大多数人所做的。</p>
<hr/>
<p>免责声明:我不拥有或维护<code>sqlalchemy-searchable</code>或<code>flask-cors</code>,但在编写时,它们是名称中带有下划线的包的好例子。</p>