[PYTHON] Procédure d'inscription PyPI pour ceux qui veulent faire leurs débuts PyPI

introduction

J'ai récemment fait mes débuts avec PyPI. J'écrirai donc une procédure d'inscription pour ceux qui envisagent de faire des débuts avec PyPI dans le même but.

Qu'est-ce que PyPI? est-ce délicieux?

Cela semble être une abréviation pour Python Package Index. Un service de gestion des packages Python, n'importe qui peut enregistrer un package. Les packages enregistrés ici peuvent être installés avec pip install` ''. Au fait, il semble lire Pipey Eye.

Préparation du colis

Tout d'abord, préparez le colis à enregistrer. Cette fois, à titre d'exemple, j'ai créé un package appelé "pypipkg". La structure du fichier ressemble à ceci. Préparez les informations nécessaires à l'enregistrement de PyPI, telles que setup.py, directement sous le répertoire pypipkg, et placez également le répertoire source pypipkg.

pypipkg $ tree
├── MANIFEST.in
├── README.rst
├── pypipkg
│   ├── __init__.py
│   ├── dependency.py
│   ├── scripts
│   │   ├── __init__.py
│   │   └── command.py
│   └── verify.py
├── requirements.txt
└── setup.py

La configuration préparée pour la première fois est comme ci-dessus. Plus tard, les répertoires nécessaires pour pip seront ajoutés pendant le processus d'enregistrement.

pypipkg $ tree
├── MANIFEST.in
├── README.rst
├── dist
│   ├── pypipkg-1.0.0.tar.gz
│   ├── pypipkg-1.0.1.tar.gz
│   ├── pypipkg-1.0.2.tar.gz
│   ├── pypipkg-1.0.3.tar.gz
│   └── pypipkg-1.0.4.tar.gz
├── pypipkg
├── pypipkg.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   ├── entry_points.txt
│   ├── requires.txt
│   └── top_level.txt
├── requirements.txt
└── setup.py

Créer setup.py

Setup.py est important pour l'enregistrement PyPi. Sur la base des informations de ce setup.py, il peut être reconnu comme un package et enregistré. Probablement le plus gênant pour créer setup.py avec l'inscription PyPI.

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals
import os

from setuptools import setup, find_packages

try:
    with open('README.rst') as f:
        readme = f.read()
except IOError:
    readme = ''

def _requires_from_file(filename):
    return open(filename).read().splitlines()

# version
here = os.path.dirname(os.path.abspath(__file__))
version = next((line.split('=')[1].strip().replace("'", '')
                for line in open(os.path.join(here,
                                              'pypipkg',
                                              '__init__.py'))
                if line.startswith('__version__ = ')),
               '0.0.dev0')

setup(
    name="pypipkg",
    version=version,
    url='https://github.com/user/pypipkg',
    author='kinpira',
    author_email='[email protected]',
    maintainer='kinpira',
    maintainer_email='[email protected]',
    description='Package Dependency: Validates package requirements',
    long_description=readme,
    packages=find_packages(),
    install_requires=_requires_from_file('requirements.txt'),
    license="MIT",
    classifiers=[
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'License :: OSI Approved :: MIT License',
    ],
    entry_points="""
      # -*- Entry points: -*-
      [console_scripts]
      pkgdep = pypipkg.scripts.command:main
    """,
)

À première vue, vous avez l'impression de faire beaucoup de choses difficiles, mais l'important est dans setup (). Ce n'est pas grave si vous écrivez chaque élément de réglage ici. Les éléments spécifiés dans l'exemple setup.py ci-dessus sont les suivants.

  install_requires=[
        "hoge",
  ],

【wiki: MIT】

En résumé, la licence MIT est la licence suivante.

  1. Tout le monde peut utiliser ce logiciel gratuitement et de manière illimitée. Cependant, l'avis de droit d'auteur et cet avis de licence doivent apparaître sur toutes les copies ou parties importantes du logiciel.
  2. L'auteur ou le détenteur des droits d'auteur n'est pas responsable du logiciel.

Ces informations sont également expliquées dans la documentation python.

Créée par MANIFEST.in

Après avoir créé setup.py, cette fois nous utilisons la méthode de spécification de requirements.txt, donc créez un fichier "MANIFEST.in". MANIFEST.in peut être inclus dans le package en le spécifiant lorsque vous souhaitez inclure intentionnellement des fichiers qui ne sont pas inclus dans le répertoire python cible du package.

En passant, si requirements.txt etc. sont spécifiés comme cette fois, si MANIFEST.in n'existe pas, une erreur se produira car requirements.txt n'existe pas au moment de l'installation.

Test de paquet

Lorsque vous êtes prêt à emballer, commencez par emballer et tester localement. Si vous souhaitez tester localement, vous pouvez le conditionner avec la commande python setup.py develop ''` et l'installer dans des packages de site.

$ cd ~/pypipkg
$ python setup.py develop

Cela vous permet de l'appeler avec import dans votre projet python. La commande créée par entry_points dans setup.py peut également être utilisée localement, vous pouvez donc vérifier si elle fonctionne comme un package sans aucun problème.

Inscrivez-vous avec TestPyPI

En vous inscrivant à TestPyPI avant de vous enregistrer auprès du PyPI de production, une série d'opérations telles que la vérification de l'affichage de la page PyPI et l'installation peuvent être effectuées de la même manière que la production.

Tout d'abord, vous devez créer un compte comme dans la production réelle, alors créez un compte.

↓ La page TestPyPI est écrite comme TESTING SITE comme ceci. スクリーンショット 2016-06-07 11.59.27.png

pypirc

Lors de l'utilisation de TestPyPi, il est nécessaire de créer .pypirc dans le répertoire HOME comme indiqué ci-dessous. (Référence)


$ vim ~/.pypirc

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password

[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password

TestPyPI register Une fois que vous avez pypirc, allez directement sous le package où se trouve setup.py et utilisez la commande register pour enregistrer les informations du package dans TestPyPI.

python setup.py register -r https://testpypi.python.org/pypi

TestPyPI search Après avoir enregistré les informations avec register, il semble que vous puissiez les vérifier avec la commande de recherche. (Dans mon cas, cela n'a pas fonctionné pour une raison quelconque)

pip search --index https://testpypi.python.org/pypi pypipkg

TestPyPI upload La commande register enregistre uniquement les informations du package, mais le gzip (code source) du package lui-même n'a pas encore été téléchargé, donc l'enregistrement n'est terminé qu'après le téléchargement de la substance avec la commande upload.

python setup.py sdist upload -r https://testpypi.python.org/pypi

TestPyPI install Après le téléchargement, vous pouvez installer avec pip install` ''.

pip install --index-url https://testpypi.python.org/simple/ pypipkg

Je pense que vous l'avez installé avec succès. Une fois que vous avez confirmé cela, tout ce que vous avez à faire est de le publier dans le PyPI réel.

S'inscrire à la production PyPI

Publions-le dans la production PyPI.

Vous devez également créer un compte ici, alors créez un compte.

https://pypi.python.org/

Une fois que vous aurez un compte, nous nous enregistrerons. La procédure est la même que pour TestPyPI.

PyPI register Tout d'abord, enregistrez-vous avec la commande register.

python setup.py register

PyPI upload Ensuite, utilisez la commande upload pour télécharger l'entité.

python setup.py sdist upload

Confirmation du site PyPI

Oui! Maintenant que l'enregistrement est terminé, vérifions-le sur le site PyPI. Comme ça スクリーンショット 2016-06-08 12.59.10.png

Il est parfaitement publié, vous pouvez donc maintenant l'installer avec pip install` ''!

Résumé

Au début, je pensais que setup.py était gênant, mais une fois que je l'ai écrit, le travail d'enregistrement après cela a été très facile. De plus, l'environnement de test est correctement préparé, j'ai donc pu faire mes débuts avec PyPI avec moins de résistance que prévu.

Recommended Posts

Procédure d'inscription PyPI pour ceux qui veulent faire leurs débuts PyPI
Points ennuyeux pour ceux qui veulent présenter Ansible
Pour ceux qui veulent écrire Python avec vim
Pour ceux qui souhaitent démarrer l'apprentissage automatique avec TensorFlow2
Référence de référence pour ceux qui veulent coder avec Rhinoceros / Grasshopper
Articles en vrac pour ceux qui veulent commencer le traitement du langage naturel
Technique Python pour ceux qui veulent se débarrasser des débutants
Un mémo pour ceux qui veulent une communication de socket rapide avec netcat
Une procédure de création d'environnement moderne pour ceux qui veulent se lancer immédiatement avec Python
[Phrase courte] easygui pour ceux qui veulent utiliser une interface graphique simple avec Python très facilement
J'ai analysé les données Airbnb pour ceux qui veulent rester à Amsterdam
Je veux faire de matplotlib un thème sombre
Je veux faire un jeu avec Python
Rejoignez Azure avec Go ~ Pour ceux qui veulent démarrer et connaître Azure avec Go ~
Pour ceux qui veulent apprendre Excel VBA et se lancer avec Python
5 raisons pour lesquelles le traitement est utile pour ceux qui veulent se lancer avec Python
La première étape de l'apprentissage automatique ~ Pour ceux qui veulent essayer l'implémentation avec python ~
PostgreSQL - Pour vous qui voulez INSÉRER à grande vitesse
Je veux trouver un package populaire sur PyPi
[Python] Je veux faire d'une liste imbriquée un taple
Construction d'environnement pour ceux qui veulent étudier Python facilement avec VSCode (pour Mac)
Lorsque vous voulez plt.save dans l'instruction for
Pour ceux qui veulent afficher les images côte à côte dès que possible avec matplotlib de Python
[Pour ceux qui veulent utiliser TPU] J'ai essayé d'utiliser l'API de détection d'objets Tensorflow 2
Comment gérer un README pour github et PyPI
Je veux créer un éditeur de blog avec l'administrateur de django
Expérimentez pour créer un PDF indépendant pour Kindle avec Python
Je veux faire une macro de clic avec pyautogui (désir)
Comment créer un package Python (écrit pour un stagiaire)
Je veux faire une macro de clic avec pyautogui (Outlook)
Je veux ajouter un joli complément à input () en python
[Discord.py] Une solution pour ceux qui ne parviennent pas à introduire dispandar
Je veux créer un Dockerfile pour le moment.
[AWS] Une histoire qui peut être utile pour ceux qui découvrent Lambda-Python et DynamoDB
Pour ceux d'entre vous qui ne savent pas comment définir un mot de passe avec Jupyter sur Docker
[Version 2020 pour les débutants] Méthode d'étude recommandée pour ceux qui souhaitent devenir eux-mêmes ingénieur en IA
"Curly and Bazaar" que seuls ceux qui travaillent dans une entreprise solide veulent lire
Créer un environnement Python pour ceux qui veulent devenir des data scientists 2016
Spigot (Paper) Introduction à la création d'un plug-in pour 2020 # 01 (Construction de l'environnement)
Comment faire un test unitaire Part.1 Modèle de conception pour l'introduction
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
Je souhaite créer une liste de paramètres à partir du code CloudFormation (yaml)
J'ai essayé de faire une étrange citation pour Jojo avec LSTM
Une note à ceux qui utilisent Python dans Visual Studio (moi)
Les débutants veulent créer quelque chose comme un cube rubic avec UE4 et en faire une bibliothèque pour un apprentissage amélioré # 4
[Salut Py (Partie 1)] Je veux faire quelque chose pour le moment, alors commencez par fixer un objectif.
Les débutants veulent créer quelque chose comme un cube rubic avec UE4 et en faire une bibliothèque pour un apprentissage amélioré # 5
Les débutants veulent créer quelque chose comme un cube rubic avec UE4 et en faire une bibliothèque pour un apprentissage amélioré # 6
Comment faire une traduction japonais-anglais
Créer une boîte à Tweet pour Pepper
Étapes pour créer un projet Django
Comment créer un bot slack
Comment créer un robot - Avancé
Comment créer une fonction récursive
[Blender] Comment créer un plug-in Blender
Comment créer un robot - Basic
Comment faire un modèle pour la détection d'objets avec YOLO en 3 heures
J'ai essayé de faire un diagnostic de visage AI pour les golfeuses professionnelles ①