Publier / télécharger une bibliothèque créée en Python vers PyPI

Une fois que vous avez créé un outil utile, j'aimerais que tout le monde l'utilise. En Python, il existe un site pour enregistrer un package appelé PyPI, et en vous inscrivant ici, vous pouvez l'installer avec pip install etc.

Dans ce document, je voudrais présenter la procédure.

Remarque: à propos de l'ancienne méthode

Si vous cherchez sur Google en pensant que ..., vous trouverez de nombreuses méthodes anciennes qui ne sont plus recommandées. Veuillez noter que ce qui suit est un exemple typique de l'ancienne méthode.

Préparation préalable

Avant de publier le package sur PyPI, les préparatifs suivants sont nécessaires.

Créer un compte avec PyPI

Créez un compte PyPI ci-dessous.

PyPI Manual user registration

Placement de «.pypirc» avec les informations d'identification du compte

Si vous trouvez difficile d'entrer votre nom d'utilisateur et votre mot de passe chaque fois que vous téléchargez, vous pouvez créer un .pypirc directement dans votre répertoire personnel et y inclure vos informations d'identification.

[pypi]
username = <username>
password = <password>

Cependant, veuillez noter que ce fichier n'est pas crypté et que son contenu sera exposé en texte brut.

Inscrivez-vous avec PyPI

Maintenant, enregistrons avec PyPI. Par souci d'explication, prenons une bibliothèque avec la structure suivante comme exemple.

YOUR-PROJECT-FOLDER
├── CHANGES.txt (OPTIONAL)
├── LICENSE.txt
├── README
├── setup.py
└── your_package (FOLDER)
    ├── __init__.py
    ├── ...
    └── subpackage (FOLDER)
        ├── __init__.py

Préparation de setup.py

Une partie importante de cette configuration est setup.py, qui décrit le processus d'empaquetage de la bibliothèque. Le contenu sera comme suit.

setup.py


from setuptools import setup


requires = ["requests>=2.14.2"]


setup(
    name='your_package',
    version='0.1',
    description='Awesome library',
    url='https://github.com/whatever/whatever',
    author='yourname',
    author_email='[email protected]',
    license='MIT',
    keywords='sample setuptools development',
    packages=[
        "your_package",
        "your_package.subpackage",
    ],
    install_requires=requires,
    classifiers=[
        'Programming Language :: Python :: 3.6',
    ],
)

Il existe de nombreux exemples de publication de liens d'archive GitHub sur download_url, mais ce n'est pas nécessaire sauf s'il y a une demande de GitHub pour le télécharger (cela ne devrait pas être nécessaire si vous le téléchargez en premier lieu). De nombreuses bibliothèques ne mentionnent pas non plus download_url dans setup.py.

Vous pouvez en fait faire beaucoup plus, mais en gros, ce n'est pas grave si les conditions ci-dessus sont remplies. Il existe un exemple de projet officiel pour plus de détails, donc je pense que vous devriez vous y référer.

pypa/sampleproject

Vous pouvez également jeter un œil à la célèbre bibliothèque setup.py. Avec ce setup.py, vous pouvez empaqueter la bibliothèque.

Emballage de la bibliothèque

Une fois que vous avez créé setup.py, vous pouvez le conditionner avec la commande suivante.

python setup.py sdist

sdist signifie" distribution source ", et comme son nom l'indique, c'est une distribution basée sur le code source. Par conséquent, lors de l'exécution de pip install, le processus de construction basé sur la description de setup.py est exécuté côté utilisateur.

Si ce processus de construction diffère selon l'OS, Python 2 et 3 ... et ainsi de suite, il est possible de distribuer un package pré-construit. Wheel est utilisé pour cela. Avec l'avènement de cette roue, il est presque impossible d'obtenir une erreur sous Windows.

Pour utiliser la roue, installez d'abord la roue.

pip install wheel

Après avoir installé wheel, vous pourrez utiliser l'option bdist_wheel, puis la conditionner.

python setup.py bdist_wheel

Je n'entrerai pas dans les détails ici car l'utilisation de la roue est également profonde, mais si vous souhaitez fournir une installation sécurisée sur différentes plates-formes, vous devriez considérer le format de la roue.

Téléchargement de la bibliothèque

Maintenant, téléchargeons-le. Tout d'abord, installez à l'avance la «ficelle» requise pour le téléchargement.

pip install twine

Tout ce que vous avez à faire maintenant est de télécharger le dossier packagé.

twine upload dist/*

référence

Recommended Posts

Publier / télécharger une bibliothèque créée en Python vers PyPI
[Python] Création d'une méthode pour convertir la base en 1 seconde
Un mémorandum pour enregistrer la bibliothèque écrit en Hy dans PyPI
Développer une bibliothèque pour obtenir la liste des collections Kindle en Python
Création d'une bibliothèque Python pour écrire des inclusions complexes et les réduire de manière facile à lire
J'ai créé une bibliothèque Python pour appeler l'API de LINE WORKS
J'ai créé un outil de mot de passe en Python.
Comment envoyer une image visualisée des données créées en Python à Typetalk
Comment utiliser la bibliothèque C en Python
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Je veux créer une fenêtre avec Python
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment créer un fichier JSON en Python
Un mémo créé dans un package et enregistré dans PyPI
Une manière intelligente de chronométrer le traitement avec Python
Étapes pour développer une application Web en Python
Pour ajouter un module à python que vous mettez dans Julialang
Comment notifier les canaux Discord en Python
[Python] Comment dessiner un histogramme avec Matplotlib
[Python] A créé une classe pour jouer des vagues de péché en arrière-plan avec pyaudio
J'ai enregistré PyQCheck, une bibliothèque qui peut effectuer QuickCheck avec Python, dans PyPI.
Analyser une chaîne JSON écrite dans un fichier en Python
Comment convertir / restaurer une chaîne avec [] en python
Je souhaite intégrer une variable dans une chaîne Python
Essayez de créer un module Python en langage C
Je veux écrire en Python! (2) Écrivons un test
[Python] Comment développer des variables dans une chaîne de caractères
Créer un plugin pour exécuter Python Doctest sur Vim (2)
J'ai essayé d'implémenter un pseudo pachislot en Python
Créez un plug-in pour exécuter Python Doctest avec Vim (1)
Je veux échantillonner au hasard un fichier avec Python
Choses à noter lors de l'initialisation d'une liste en Python
Création d'une bibliothèque Python DateTimeRange qui gère les plages horaires
[Python] Une bibliothèque pratique qui convertit les kanji en hiragana
Introduction à l'algèbre linéaire avec Python: Décomposition A = LU
[GCF + Python] Comment importer Excel vers GCS et créer une nouvelle table dans BigQuery
Prendre une capture d'écran en Python
Créer une fonction en Python
Pour vider stdout en Python
Une route vers Python intermédiaire
Connectez-vous au site Web en Python
Télécharger un fichier sur Dropbox
Remplacer les fonctions de bibliothèque en Python
Parler avec Python [synthèse vocale]
Comment développer en Python
Dessinez un cœur en Python
Publier sur Slack en Python
Comment déboguer une bibliothèque Python standard dans Visual Studio
Publication d'une bibliothèque qui masque les données de caractères dans les images Python
Comment importer la bibliothèque Python configurée dans EFS dans Lambda
Une histoire sur la façon de spécifier un chemin relatif en python.
Comment utiliser la méthode __call__ dans la classe Python
Changer la destination de sortie standard en un fichier en Python
Comment importer des fichiers où vous le souhaitez en Python
Un moyen simple d'éviter plusieurs boucles for en Python
J'ai essayé de publier ma propre bibliothèque de baseball Python sur Packaging & PyPI
Un moyen standard de développer et de distribuer des packages en Python
J'ai essayé "Comment obtenir une méthode décorée en Python"