【问题标题】:Folder naming convention for python projectspython项目的文件夹命名约定
【发布时间】:2019-03-20 12:43:10
【问题描述】:

python 社区中为项目文件夹和子文件夹设置名称的命名约定是什么?

my-great-python-project
my_great_python_project 
myGreatPythonProject 
MyGreatPythonProject

我发现在 github 上搞混了。 感谢您的专家意见。

【问题讨论】:

  • 1.适用于项目名称,不适用于包或模块 2. 适用于 3./4。不漂亮
  • 非常感谢。 @Klaus,根据python标准,python项目和包有什么区别吗?
  • 是的,包或模块需要有一个有效的 Python 名称。这不包括其中带有连字符的名称。如果你的包/模块结构在它下面,你仍然可以将它们用于项目文件夹。这是因为项目文件夹通常位于 PYTHONPATH 文件夹中,因此不属于任何 import 行。
  • 谢谢。这有帮助。最后一个问题。我知道我们可以在一个包中编写多个模块,但我想知道在一个项目下编写多个包是否是一种好习惯。感谢您的回复。

标签: python naming conventions


【解决方案1】:

这是一个示例,说明我们如何组织名为 altimeter-valport-lcm 的存储库,其中包含包 altimeter_valeport_lcm。包中包含模块altimeter_valeport_lcm.parser

altimeter-valeport-lcm/
├── altimeter_valeport_lcm
│   ├── __init__.py
│   ├── __main__.py
│   ├── parser.py
│   └── snake_case.py
├── README.rst
└── setup.py

[注意]:

  • 全部小写用于选择包名。
  • 存储库应使用与包相同的名称,但存储库用短划线 (-) 替换下划线 (_)。

Read More.

【讨论】:

    【解决方案2】:

    共有三种约定,您可能会感到困惑。

    1. 标准

    PEP8 定义了如何命名包和模块的标准:

    模块应该有简短的全小写名称。如果提高可读性,可以在模块名称中使用下划线。 Python 包也应该有简短的全小写名称,但不鼓励使用下划线。

    1. 其实没有人关心不使用下划线的建议

    尽管它在 PEP8 中,但许多软件包都使用下划线,社区并不认为这是不好的做法。所以你会看到很多名字,比如sqlalchemy_searchable,等等。

    虽然您可以创建一个名称与您的包名称不匹配的文件夹,但这样做通常不是一个好主意,因为它会使事情变得更加混乱。

    因此,您通常会为文件夹使用全小写的名称和下划线。

    1. pypi 上的包命名

    安装时包的名称不需要与它在 pypi 上发布的名称匹配(pip 安装的源)。 pypi 上的包通常用连字符而不是下划线命名。 例如flask-cors,安装包flask_cors

    但是,您会注意到,如果您跟进此示例,flask-cors's GitHub repoflask_cors/ 目录中定义了包代码。这是常态。

    虽然有点混乱,因为pip 软件包安装不区分大小写,并且同等对待下划线和连字符。所以Flask-CorsfLASK_cOrs等都是“等价的”。 就个人而言,我不喜欢用这个来玩游戏——我建议在 pypi 上用连字符全小写命名包,这是大多数人所做的。


    免责声明:我不拥有或维护 sqlalchemy-searchableflask-cors,但在撰写本文时,它们是名称中带有下划线的软件包的好例子。

    【讨论】:

    • 非常感谢。 python项目和包有什么区别吗?
    • "project" 不是 python 中的特定技术术语,但 "package" 是。以我的经验,人们可能会说“项目”来指代 Python 代码以及它支持 setup.py(或 pyproject.toml 或 Pipfile)、自述文件和文档、更改日志、许可证等的演员表。任何带有 __init__.py 的目录files 是一个有效的包,通常每个项目会有 1 或 2 个:正在开发的代码和测试。测试可以是它们测试的独立包或子包——这两种结构都是有效的并且有不同的权衡。
    【解决方案3】:

    Python 包也应该有简短的全小写名称,但不鼓励使用下划线。 Pep 8 Style Guide

    这是对包的建议,它是包含模块的主文件夹,用于测试、设置和脚本文件 *.py 和 __init__.py。因此,我假设文件夹是包,因此,应该全部小写,没有下划线(参见链接Some Package Github)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-26
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      相关资源
      最近更新 更多