Il était étonnamment gênant de le rendre aussi simple que le système de paquets de nœuds.
Créez un répertoire approprié.
mkdir mymodule && cd $_
Utilisez virtualenv ou direnv pour isoler le python système du python dans le répertoire.
Pour virtualenv virtualenv env
Pour direnv, faites direnv edit .
puis layout python
dans l'éditeur que vous ouvrez.
Si vous faites pip freeze
et que seul wsgiref apparaît, la construction de l'environnement est terminée.
Puisqu'il est isolé du système pip, vous pouvez installer librement les modules requis.
.
├── .gitignore
├── LICENSE
├── MANIFEST.in
├── README.md
├── mymodule.py
├── setup.py
└── tests
└── myplugin_test.py
.gitignore
Basé sur .gitignore de Python, ajoutez le répertoire env si vous utilisez virtualenv et ajoutez .direnv si vous utilisez direnv. gitignore/Python.gitignore
README.md
En fait, il est préférable d'utiliser restructuredText qui est formaté et affiché avec PyPI au lieu de markdown.
setup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import with_statement
from setuptools import setup
with open("README.md") as f:
long_description = f.read()
setup(
name="mymodule",
version="0.1.0",
description="hogehoge.",
long_description=long_description,
author="yourid",
author_email="youremail",
url="yoururl",
py_modules=["mymodule"],
include_package_data=True,
install_requires=["Flask"],
tests_require=["nose"],
license="MIT",
keywords="",
zip_safe=False,
classifiers=[]
)
py_modules spécifie le nom de fichier du module à publier.
install_requires et tests_require écrivent les modules dépendants. Selon l'article, pip freeze
peut être spécifié ici, mais il est préférable d'écrire sans spécifier manuellement la version car elle sera spécifiée jusqu'à la version et cela ressemblera à un enfer de dépendances.
classifiers est sélectionné depuis ici.
MANIFEST.in
Par défaut, seuls les fichiers Python sont inclus dans le module, il est donc nécessaire d'inclure des fichiers texte spéciaux. Cette fois, écrivez ʻinclude README.md` pour inclure README.md. Si vous préparez requirements.txt, vous devez également le décrire ici.
mymodule.py
Corps du module. Écrivez de manière appropriée.
tests/
Test de module. Écrivez de manière appropriée. Écrire correctement.
Utilisez le nez. Entrez avec pip install nose
.
L'exécution est nosetests
Inscrivez-vous auprès de Test PyPI et PyPI. Créez un fichier .pypirc dans votre répertoire personnel et écrivez les informations d'enregistrement.
[distutils]
index-servers =
pypi
pypitest
[pypi]
repository: https://pypi.python.org/pypi
username: {{Nom d'utilisateur}}
password: {{mot de passe}}
[pypitest]
repository: https://testpypi.python.org/pypi
username: {{Nom d'utilisateur}}
password: {{mot de passe}}
Une fois le module terminé et le test terminé, python setup.py register -r https: // testpypi.python.org / pypi
pour enregistrer le paquet puis python setup.py sdist upload -r https: // Inscrivez-vous avec Test PyPI sur testpypi.python.org / pypi
. Puisqu'il s'agit d'un site de test, vous pouvez vous inscrire et tester de plus en plus.
S'il est enregistré sans problème, vous pouvez l'installer avec pip install --index-url https: // testpypi.python.org / simple / mymodule
.
Après avoir testé s'il peut être installé correctement avec Python sur le système, importez-le et utilisez-le, etc., enregistrez-le dans le PyPI de production.
Enregistrez le module en production PyPI avec python setup.py register
Vous pouvez télécharger des modules sur PyPI de production avec python setup.py sdist upload
.
j'ai fabriqué ça airtoxin/plugin-loader
Recommended Posts