Je veux comprendre * setup.py *, * requirements.txt * et les autres fichiers que je vois souvent dans les projets Python. Quels types de fichiers existe-t-il en premier lieu? Je faisais des recherches sur diverses choses. Pour le moment, je regardais le contenu d'un projet Python populaire sur GitHub pour imiter mon prédécesseur, et il existe des fichiers de configuration pour divers outils, il existe de tels outils. Le fera? Je me suis intéressé à quelque chose de différent de l'objectif initial.
C'est pourquoi ** environ 700 projets avec le plus d'étoiles dans le projet Python sur GitHub ** sont comptés à la racine et les fichiers les plus utilisés sont totalisés, quel outil est utilisé? Je l'ai cherché.
setup.py
◆ Nombre de projets utilisés: 503 ◆ Outils utilisés: setuptools
Décrit tous les comportements lors de la création, de la distribution et de l'installation d'un projet Python en tant que bibliothèque.
Le répertoire où se trouve * setup.py * est reconnu comme un projet Python, vous pouvez donc spécifier le répertoire local où se trouve * setup.py *, le fichier zip local, le référentiel Git, etc. et pip install
. Sera.
pip install path/prj/dir
pip install path/dir/file.zip
pip install git+https://github.com/{user-name}/{repo-name}
pip installe le package conformément à la description dans setup.py.
Pour empaqueter le projet en tant que bibliothèque, spécifiez python setup.py sdist
ou python setup.py bdist_wheel
et exécutez.
#Lors de la création d'une distribution de code source
python setup.py sdist
#Roue requise pour créer une distribution pré-construite
pip install wheel
python setup.py bdist_wheel
Référence: Création et distribution de packages avec Setuptools
MANIFEST.in
◆ Nombre de projets utilisés: 402 ◆ Outils utilisés: setuptools
Si vous souhaitez inclure des fichiers autres que le code source dans la distribution, écrivez-les dans ce fichier.
Si vous écrivez ʻinclude_package_data = True dans l'argument (ou * setup.cfg *?) Of
Setup () `, ce fichier sera traité.
Vous pouvez spécifier le fichier avec des conditions plus détaillées en spécifiant le paramètre package_data
.
Référence: https://setuptools.readthedocs.io/en/latest/setuptools.html#including-data-files
setup.cfg
◆ Nombre de projets utilisés: 344 ◆ Outils utilisés: setuptools
Lors de l'empaquetage du projet, j'ai dû écrire diverses choses dans les arguments de la fonction setup ()
de * setup.py *. pourtant
Il y avait des problèmes tels que la difficulté à écrire et à interpréter par des outils autres que * setuptools *. Par conséquent, * setup.cfg * a été créé pour qu'une série de paramètres puisse être regroupée dans un fichier séparé.
Cela élimine le besoin d'écrire des arguments dans setup ()
. (Cependant, si vous utilisez un ancien outil de construction, vous devez décrire l'argument)
référence
requirements.txt
◆ Nombre de projets utilisés: 261 ◆ Outils utilisés: pip
Tapez pip freeze
sur la ligne de commande pour afficher les informations de dépendance sur la ligne de commande. Si vous définissez pip freeze> requirements.txt
, il sera affiché dans le fichier tel quel. Si vous êtes dans l'environnement virtualenv (venv), les packages de virtualenv seront générés.
Les packages générés par freeze n'incluent pas les packages pour la gestion des packages tels que * pip *, * setuptools * et * wheel *.
requirements.exemple txt
appdirs==1.4.3
astroid==2.3.3
botocore==1.15.6
Abréviation
Lors de l'installation de la dépendance, cela ressemble à ce qui suit
pip install -r requirements.txt
Comment écrire: https://pip.pypa.io/en/latest/reference/pip_install/#example-requirements-file
L'outil utilisé est principalement pip, mais Pipenv peut également installer des packages depuis * requirements.txt *, et inversement générer * requirements.txt * depuis * Pipfile *. La poésie ne semble-t-elle pas possible?
pyproject.toml
◆ Nombre de projets utilisés: 102 ◆ Outils utilisés: Poetry, flit, [setuptools](https: // github. com / pypa / setuptools), Pyflow, noir etc.
Si le paquet que vous souhaitez installer avec pip install
est distribué au format sdist et que vous devez le construire vous-même
Si la version de pip est v19.0 ou ultérieure et que le package cible a un fichier * pyproject.toml *, le package sera construit selon PEP 517.
La création de packages à l'aide de * pyproject.toml * inclut Poetry, Pyflow Les outils le supportent, mais il semble que * setuptools * soit également pris en charge dans les versions récentes.
Construisez sur la table \ [tool ] comme décrit dans la section tool table de PEP 518 Peut décrire les paramètres d'outils pour les projets Python autres que les outils. Vous devez utiliser le sous-tableau dans \ [tool ], [tool.flit.metadata]
, black pour flit Dans le cas de (: //github.com/psf/black), vous pouvez décrire les paramètres de chaque outil en écrivant comme [tool.black]
.
requirements-dev.txt
◆ Nombre de projets utilisés: 51+ ◆ Outils utilisés: pip
Requirements.txt pour l'environnement de développement / test. Comme mentionné ci-dessus, le nom de fichier de * requirements.txt * est arbitraire, donc Les informations de package dépendant utilisées uniquement dans l'environnement de test sont enregistrées sous un nom différent de * requirements.txt *. Cependant, il y a beaucoup de fluctuations dans le nom, et il y en a d'autres:
Etc.
Pipfile
◆ Nombre de projets utilisés: 26 ◆ Outils utilisés: Pipenv
Un fichier qui décrit les informations de package dépendant utilisées par Pipenv.
pipenv run script-name
.Pipfile.lock
◆ Nombre de projets utilisés: 22 ◆ Outils utilisés: Pipenv
Pipenv Un fichier de verrouillage qui décrit les informations des packages dépendants générés.
Quelque chose comme * package-lock.json * dans npm. Puisque le package décrit dans le fichier de verrouillage est installé tel quel avec pipenv sync
( pipenv sync -d
si dev-package est également installé), le même environnement peut être reproduit entre plusieurs utilisateurs dans l'environnement de développement / environnement d'exploitation. ..
Il y avait aussi un * pipfile.lock *. (Peut-il être utilisé?)
Il ne correspond pas au nombre de * Pipfile *, mais tout le monde, gérons correctement le fichier de verrouillage avec Git. J'ai pensé ... mais d'après la documentation Pipenv, "Cibler plusieurs versions de Python" Si tel est le cas, ne contrôlez pas la version du fichier de verrouillage. "
- Generally, keep both Pipfile and Pipfile.lock in version control.
- Do not keep Pipfile.lock in version control if multiple versions of Python are being targeted.
poetry.lock
◆ Nombre de projets utilisés: 15 ◆ Outils utilisés: Poésie
Un fichier de verrouillage qui décrit les informations des packages dépendants générés par Poetry. Il est généré sur la base du contenu décrit dans * pyproject.toml *.
tox.ini
◆ Nombre de projets utilisés: 225 ◆ Outils utilisés: tox
Outils de gestion et de ligne de commande Virtualenv pour tester avec plusieurs versions et interpréteurs de Python. Écrivez les paramètres dans * tox.ini *, mais il semble qu'il prend également en charge * pyproject.toml *
.coveragerc
◆ Nombre de projets utilisés: 189 ◆ Outils utilisés: couverture
Fichier de paramétrage de l'outil de mesure de la couverture de test.
codecov.yml
◆ Nombre de projets utilisés: 102 ◆ Outils utilisés: codecov
Il s'agit également d'un fichier de paramètres pour un autre outil de mesure de couverture. Bien qu'il soit inférieur à * .coveragerc *, il semble qu'il soit également utilisé dans un nombre considérable de projets. Aussi avec * .codecov.yml *.
.pylintrc
◆ Nombre de projets utilisés: 80 ◆ Outils utilisés: pylint
Fichier de configuration de l'outil linter * pylint *. Aussi avec * pylintrc *.
pytest.ini
◆ Nombre de projets utilisés: 69 ◆ Outils utilisés: pytest
Fichier de configuration * pytest *. Décrivez les options au moment de l'exécution.
.flake8
◆ Nombre de projets utilisés: 55 ◆ Outils utilisés: flake8
Le fichier de paramétrage de l'outil d'analyse statique familier * flake8 *.
conftest.py
◆ Nombre de projets utilisés: 32 ◆ Outils utilisés: pytest
Un fichier pour définir les fixtures et les fonctions util communes dans * pytest *. Si vous le créez dans un package, vous ne pouvez l'utiliser que sous ce package, vous pouvez donc l'organiser en fonction de la portée que vous souhaitez utiliser.
mypy.ini
◆ Nombre de projets utilisés: 28 ◆ Outils utilisés: mypy
Fichier de configuration de l'outil de vérification de type statique * mypy *. .. Il y avait aussi un * .mypy.ini *.
.isort.cfg
◆ Nombre de projets utilisés: 23 ◆ Outils utilisés: isort
Un fichier de configuration pour * isort *, un outil qui trie les importations de code Python selon des règles.
.bumpversion.cfg
◆ Nombre de projets utilisés: 21 ◆ Outils utilisés: version bump
version bump est un outil de ligne de commande qui augmente et réécrit de manière appropriée diverses versions définies dans le code source.
manage.py
◆ Nombre de projets utilisés: 20 ◆ Outils utilisés: script de configuration django?
django Je ne comprends pas vraiment, mais ça dit quelque chose comme ça. zulip/manage.py
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zproject.settings")
from django.conf import settings
from django.core.management import execute_from_command_line
from django.core.management.base import CommandError
from scripts.lib.zulip_tools import log_management_command
log_management_command(" ".join(sys.argv), settings.MANAGEMENT_LOG_PATH)
os.environ.setdefault("PYTHONSTARTUP", os.path.join(BASE_DIR, "scripts/lib/pythonrc.py"))
if "--no-traceback" not in sys.argv and len(sys.argv) > 1:
sys.argv.append("--traceback")
try:
execute_from_command_line(sys.argv)
except CommandError as e:
print(e, file=sys.stderr)
sys.exit(1)
versioneer.py
◆ Nombre de projets utilisés: 15 ◆ Outils utilisés: versioneer
C'est aussi un outil qui élève automatiquement la version du projet.
.pyup.yml
◆ Nombre de projets utilisés: 14 ◆ Outils utilisés: pyup
Il semble qu'il mettra à jour le fichier de dépendance Python du projet via la pull request de GitHub / GitLab. Je ne suis pas sûr.
.pep8speaks.yml
◆ Nombre de projets utilisés: 11 ◆ Outils utilisés: pep8speaks
C'est une "application GitHub qui vérifie automatiquement les styles de code Python avec des pull requests".
.style.yapf
◆ Nombre de projets utilisés: 9 ◆ Outils utilisés: YAPF
Le formateur de code Python de Google. Il s'agit d'une abréviation de "Yet Another Python Formatter".
tasks.py
◆ Nombre de projets utilisés: 9 ◆ Outils utilisés: Invoke?
Référence: https://equal-001.hatenablog.com/entry/2016/03/31/113000
pyinvoke est un module qui peut rassembler diverses commandes.
Cité de la documentation officielle. Si vous ajoutez un décorateur @ task
à la fonction comme indiqué ci-dessous,
from invoke import task
@task
def clean(c, docs=False, bytecode=False, extra=''):
patterns = ['build']
if docs:
patterns.append('docs/_build')
if bytecode:
patterns.append('**/*.pyc')
if extra:
patterns.append(extra)
for pattern in patterns:
c.run("rm -rf {}".format(pattern))
@task
def build(c, docs=False):
c.run("python setup.py build")
if docs:
c.run("sphinx-build docs docs/_build")
Il semble qu'il puisse être facilement appelé comme tâche depuis la CLI
$ invoke clean build
.landscape.yml
◆ Nombre de projets utilisés: 8 ◆ Outils utilisés: Prospector?
Prospector is a tool to analyse Python code and output information about errors, potential problems, convention violations and complexity.
Cela semble être un outil d'analyse de code.
noxfile.py
◆ Nombre de projets utilisés: 7 ◆ Outils utilisés: Nox
bibliothèque de type tox
Fichiers de configuration pour des outils qui ne sont pas exclusifs à Python, tels que CI / CD, Docker / Vagrant et la génération de documents.
.travis.yml
◆ Nombre de projets utilisés: 386 ◆ Outils utilisés: Travis CI
CI。
Dockerfile
◆ Nombre de projets utilisés: 111 ◆ Outils utilisés: Docker
dockerfile.
.readthedocs.yml
◆ Nombre de projets utilisés: 90 ◆ Outils utilisés: readthedocs
Outil de génération de documents Avez-vous * .readthedocs.yml * et * readthedocs.yml *?
Il semble qu'il soit utilisé dans de nombreux projets, et de nombreux outils que j'ai écrits jusqu'à présent créent en fait des documents avec cela.
.pre-commit-config.yaml ◆ Nombre de projets utilisés: 88 ◆ Outils utilisés: pre-commit
.editorconfig
◆ Nombre de projets utilisés: 83 ◆ Outils utilisés: editorconfig
Un outil pour formater le code dans divers éditeurs et IDE. Il peut être utilisé autrement que dans Python.
.appveyor.yml
◆ Nombre de projets utilisés: 79 ◆ Outils utilisés: appveyor
Service CI / CD.
.dockerignore
◆ Nombre de projets utilisés: 76 ◆ Outils utilisés: Docker
Définition des fichiers à ignorer dans Docker
mkdocs.yml
◆ Nombre de projets utilisés: 34 ◆ Outils utilisés: mkdocs
C'est un générateur de site statique rapide, simple et luxueux pour la création de documents de projet.
docker-compose.yml
◆ Nombre de projets utilisés: 33 ◆ Outils utilisés: docker-compose
docker-compose.
package.json
◆ Nombre de projets utilisés: 32 ◆ Outils utilisés: npm
fichier de package npm.
Dans les projets réalisés avec Python et JavaScript tels que frappe / frappe, la gestion des paquets côté js se fait probablement avec * package.json *. ..
azure-pipelines.yml
◆ Nombre de projets utilisés: 28 ◆ Outils utilisés: Azure Pipelines
.deepsource.toml
◆ Nombre de projets utilisés: 14 ◆ Outils utilisés: deepsource
Analyse du code source? Il semble qu'il puisse être utilisé autrement que Python
environment.yml
◆ Nombre de projets utilisés: 13 ◆ Outils utilisés: conda?
https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-from-an-environment-yml-file
Vagrantfile
◆ Nombre de projets utilisés: 12 ◆ Outils utilisés: Vagrant
package-lock.json
◆ Nombre de projets utilisés: 12 ◆ Outils utilisés: npm
fichier de verrouillage npm. Il est géré avec package.json.
_config.yml
◆ Nombre de projets utilisés: 11 ◆ Outils utilisés: jekyll
jekyll est un outil Ruby pour générer des sites statiques. Par exemple, this devient comme ça?
Jenkinsfile
◆ Nombre de projets utilisés: 10 ◆ Outils utilisés: Jenkins
.eslintrc
◆ Nombre de projets utilisés: 16 ◆ Outils utilisés: Eslint
Cela ne devrait pas être lié à Python. Est-ce pour JS?
Procfile
◆ Nombre de projets utilisés: 10 ◆ Outils utilisés: Heroku
Un fichier qui spécifie les commandes exécutées par l'application au démarrage dans Heroku.
.codeclimate.yml
◆ Nombre de projets utilisés: 10 ◆ Outils utilisés: CodeClimate?
Contrôle de la qualité du code, mesure de la couverture, etc. Il peut être utilisé autrement que dans Python.
yarn.lock
◆ Nombre de projets utilisés: 9 ◆ Outils utilisés: fil
Fichier de verrouillage de fil. Il est géré avec * package.json *.
runtime.txt
◆ Nombre de projets utilisés: 7 ◆ Outils utilisés: Heroku
Fichier de configuration qui spécifie le runtime lors du déploiement sur Heroku
Je les ai obtenus par ordre décroissant d'étoiles, alors je me demande s'il y a peu de projets utilisant des outils modernes? J'avais l'impression que. Il semble y avoir beaucoup à apprendre des référentiels bien connus tels que la structure des projets Python et des scripts de version de test, donc si vous êtes intéressé, il peut être amusant de le vérifier. Veuillez nous indiquer s'il existe d'autres outils couramment utilisés / outils recommandés.
Recommended Posts