python社区中用于设置项目文件夹和子文件夹名称的命名约定是什么?
my-great-python-project
my_great_python_project
myGreatPythonProject
MyGreatPythonProject
我发现在github中混淆了。 感谢您的专家意见。
答案 0 :(得分:7)
有三种约定,您可能会感到困惑。
PEP8定义了如何命名包和模块的标准:
模块应使用简短的全小写名称。如果模块名称可以提高可读性,则可以在模块名称中使用下划线。尽管不鼓励使用下划线,但Python软件包也应使用短小写全名。
即使在PEP8中,许多软件包也使用下划线,并且社区并不认为这是不良做法。因此,您会看到许多名称,例如sqlalchemy_searchable
等。
尽管您可以创建一个名称与您的软件包名称不匹配的文件夹,但这通常不是一个好主意,因为这会使情况更加混乱。
因此,通常在文件夹中使用带小写的全小写名称。
安装时的软件包名称不需要与在pypi上发布的名称相匹配(安装pip
的源)。 pypi
上的软件包通常以连字符而不是下划线命名。
例如flask-cors,将安装软件包flask_cors
。
但是,您会注意到,如果继续执行此示例,则flask-cors's GitHub repo在flask_cors/
目录中定义了程序包代码。这是常态。
但是,它有点混乱,因为pip
软件包的安装不区分大小写,并且等效地对待下划线和连字符。因此Flask-Cors
,fLASK_cOrs
等都是“等价的”。
就个人而言,我不喜欢这样玩游戏-我建议您仅在pypi上用连字符将小写字母命名为包,这是大多数人的做法。
免责声明:我不拥有或维护sqlalchemy-searchable
或flask-cors
,但在撰写本文时,它们是名称中带有下划线的软件包的很好示例。
答案 1 :(得分:2)
这里是一个示例,说明了如何组织一个名为altimeter-valport-lcm
的存储库,其中包含软件包altimeter_valeport_lcm
。该软件包包含模块altimeter_valeport_lcm.parser
:
altimeter-valeport-lcm/
├── altimeter_valeport_lcm
│ ├── parser.py
│ ├── __init__.py
│ └── __main__.py
├── README.rst
└── setup.py
[注意]:
答案 2 :(得分:0)
Python软件包还应该使用短的全小写名称,尽管不鼓励使用下划线。 Pep 8 Style Guide
这是对软件包的建议,软件包是包含模块的主文件夹,用于测试,设置和脚本文件* .py和__init__.py。因此,我假设该文件夹是软件包,因此,应全部使用小写字母且没有下划线(请参见链接Some Package Github)。