Существует три соглашения, которые могут вас запутать.
- Стандарт
PEP8 определяет стандарт для именования пакетов имодули:
Модули должны иметь короткие, строчные имена.Подчеркивания могут использоваться в имени модуля, если это улучшает читабельность.Пакеты Python также должны иметь короткие, строчные имена, хотя использование подчеркивания не рекомендуется.
На самом деле, никто не заботится о рекомендации не использовать подчеркивания
Несмотря на то, что это в PEP8, многие пакеты используют подчеркивания, и сообщество не считает это плохой практикой.Таким образом, вы видите много имен, таких как sqlalchemy_searchable
и т. Д.
Хотя вы можете создать папку с именем, которое не совпадает с именем вашего пакета, это, как правило, плохая идея, поскольку это делает вещи более запутанными.
Таким образом, вы обычно будете использовать все строчные имена с подчеркиванием для своих папок.
Имена пакетов в pypi
Имя пакета, когда он установлен, не должно совпадать с именем, которое опубликовано в pypi (источник для pip
устанавливает).Пакеты на pypi
обычно именуются дефисами, а не подчеркиванием.например, flask-cors , который устанавливает пакет flask_cors
.
Однако, вы заметите, что если вы последуете этому примеру, то репозиторий flask-cors GitHub repo определяет код пакета в каталоге flask_cors/
.Это норма.
Это немного запутанно, потому что установка пакета pip
не чувствительна к регистру и одинаково обрабатывает подчеркивания и дефисы.Так что Flask-Cors
, fLASK_cOrs
и т. Д. Являются "эквивалентными".Лично мне не нравится играть в игры с этим - я рекомендую просто называть пакеты на pypi строчными буквами и дефисами, что делает большинство людей.
Отказ от ответственности: я не владеюили сохраните sqlalchemy-searchable
или flask-cors
, но на момент написания статьи они являются хорошими примерами пакетов с подчеркиванием в именах.