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.
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.
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
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.
`find_packages (exclude = [" *. Pyc "])`
install_requires=[
"hoge",
],
En résumé, la licence MIT est la licence suivante.
- 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.
- L'auteur ou le détenteur des droits d'auteur n'est pas responsable du logiciel.
classifiers: Catégories liées
Celui qui semble accroché à la recherche par catégorie dans PyPI (Liste des catégories)
entry_points: Créez une commande qui fournit les fonctionnalités du package
Comment écrire:
nom de la commande = chemin du script: fonction à exécuter '' ``
Ces informations sont également expliquées dans la documentation python.
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.
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.
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.
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.
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
Oui! Maintenant que l'enregistrement est terminé, vérifions-le sur le site PyPI. Comme ça
Il est parfaitement publié, vous pouvez donc maintenant l'installer avec
pip install` ''!
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.