Inscription auprès de PyPI à partir de la bibliothèque Python moderne faite par vous-même

Je souhaite enregistrer ma bibliothèque auprès de PyPI

... mais Python a quelque chose comme le [bundler] de Ruby (http://bundler.io/) Non (je ne pense pas que ce soit unifié même si ça va) Une structure de répertoires gratuite pour chaque produit ...

Au moins je voulais unifier mes produits Structure de répertoire lors de la création d'une bibliothèque Python Écrivez des notes sur la construction de l'environnement. J'oublierai ...

Je suis conscient que la version de Python utilisée est la 3.3 ou une version ultérieure. Avant cela (3.2, 3.1 ... 2.x) n'est pas pris en compte. Je ne pense pas que ce soit un problème ...

Bibliothèque créée à des fins de test

スクリーンショット 2013-10-16 8.08.53.png

J'ai créé une étrange bibliothèque appelée ** fizzbuzz **. C'est une bibliothèque ou un outil de ligne de commande. J'écrirai des notes basées sur la structure de cette bibliothèque.

Structure des répertoires / fichiers de la bibliothèque

La structure des répertoires et des fichiers est la suivante.

fizzbuzz
└lib #Corps de la bibliothèque
  └bin #Corps du script d'exécution
  └fizzbuzz #Répertoire des noms de bibliothèque
      └ __init__.py #Les paramètres d'initialisation lors de l'importation de la bibliothèque sont ici
  └test #Fichier test
requirements.txt # travis-ci et configuration.Utiliser avec py. pépin--Peut être fait avec gel.
info.py #Fichier contenant des informations sur l'auteur du package, etc.
version.py #Fichier contenant les informations de version
setup.py #Fichier pour être la clé

Je pense que ça va à cause de ça.

Construisez l'environnement pyvenv sous le répertoire de la bibliothèque

À partir de Python 3.3, `` virtualenv '' est inclus. Pour tester le fonctionnement de la bibliothèque, utilisez la commande suivante Créez un environnement d'exécution Python local.

> pyvenv .venv

Je l'utilise depuis virtualenv, donc c'est sous .venv J'essaie de créer un environnement pour pyvenv, mais je pense que c'est facultatif (comme .pvenv).

Depuis que j'ai construit un environnement d'exécution Python local, activateLa coquillesourceImportez avec une commande. En faisant cela, l'environnement Python sous .venv``` sera utilisé. (comme la commande python)

> source .venv/bin/activate

Installation des outils de configuration

Jusqu'à une certaine version de virtualenv La bibliothèque système a été importée par virtualenv, Il ne peut pas être importé en tant que nouvelle version de virtualenv et pyvenv. L'exécution de pyvenv crée un environnement pur.

Par conséquent, l'environnement est créé sans easy_install. Exécutez la commande suivante pour configurer setuptools```.

Cité à partir de la page PyPI de setuptools.

> wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python

Maintenant, exécutez la commande easy_install et c'est dans PyPI Vous pourrez installer le package. Mais plutôt que d'installer le package PyPI avec easy_install

Il est plus facile à utiliser avec pip. Mettons pip...



## installation de pip

 Si easy_install est installé, vous pouvez facilement installer pip.

easy_install pip


 Maintenant tu es prêt.

# Faites une liste des bibliothèques requises

 Si votre bibliothèque utilise une autre bibliothèque
 Dans le hachage passé à la fonction setuptools.setup
 Vous devez spécifier install_requires.
 Avec pip, vous pouvez facilement créer une liste des bibliothèques requises.

pip freeze > requirements.txt


 Travis CI utilise également requirements.txt

 Dans setup.py, utilisez `` `` requirements.txt``` pour spécifier install_requires.

```py
setup({
  install_requires: open('requirements.txt').read().splitlines(),
})

Cela installera les bibliothèques externes requises par la bibliothèque.

Où conserver les informations sur le colis

Informations sur le créateur du package

Quel fichier doit avoir les informations sur le créateur de la bibliothèque affichées par PyPI J'étais perdu, mais je l'ai mis en tant que info.py directement sous la racine du paquet.

info.py


# package information.
INFO = dict(
  name        = "PyFizzBuzz",
  description = "FizzBuzz cli tool",
  author      = "Keiji Matsuzaki",
  author_email = "[email protected]",
  license     = "MIT License",
  url         = "https://github.com/futoase/fizzbuzz",
  classifiers = [
    "Programming Language :: Python :: 3.2",
    "Programming Language :: Python :: 3.3",
    "License :: OSI Approved :: MIT License"
  ]
)

les classificateurs ont leur propre bibliothèque depuis Liste ici Sélectionnez et définissez le genre qui semble correspondre.

Version du package

version.Spécifiez VERSION dans py.




#### **`version.py`**
```py

VERSION = "0.0.3"

Création d'un fichier MANIFEST.in

** 20131017 postscript **

package_info dans le répertoire.py, version.py, requirements.Parce que vous n'avez pas spécifié de fichier txt


 Je dois écrire un fichier MANIFEST.in.
 Je n'ai pas pu trouver de problèmes qui n'étaient pas inclus car je ne les avais pas vérifiés au moment de la rédaction de cet article.
 Alors ajoutez-le.


#### **`MANIFEST.in`**
```py

include info.py
include version.py
include requirements.txt

Test de paquet

Testez le package à l'aide de la commande pip

> pip install .

En vous spécifiant dans votre propre répertoire et en effectuant une installation pip, pyvenvVous pouvez utiliser votre propre bibliothèque dans votre environnement.

> pip list
konira (0.3.2)
pip (1.4.1)
PyFizzBuzz (0.0.3)
setuptools (1.1.5)

Si vous trouvez un bogue dans votre bibliothèque après l'installation de pip Exécutez la commande suivante sous l'environnement de pyvenv.

> pip uninstall PyFizzBuzz

C'est comme spécifier `` gemspec``` dans le Gemfile ... Je pense que vous devriez exécuter la commande avec sentiments ...

Contrôle de fonctionnement

Cette fois, fizzbuzz est exécuté en tant que commande, donc

.venv/bin/La commande se trouve dans fizzbuzz.



(.venv) > fizzbuzz 10 | head -3
1 2 Fizz


 J'ai pu vérifier l'opération.

# Inscrivez-vous avec PyPI

 Si vous ne vous êtes pas enregistré auprès de PyPI, exécutez la commande suivante pour vous inscrire.


#### **`~/.Si vous n'avez pas généré de fichier piprc, vous serez invité à enregistrer votre nom d'utilisateur et votre mot de passe.(Devrait être)...`**
> python setup.py register

Téléchargez le package sur PyPI.

> python setup.py sdist upload

OK si la page de la bibliothèque est créée dans PyPI

Cela peut être différent pour les bibliothèques d'extensions C. (Je n'envisage pas de télécharger des fichiers d'œufs ...)

Après le téléchargement sur PyPI

Le nombre de téléchargements par jour, une liste des versions de fichiers précédemment téléchargées, etc. Vous pouvez le voir sur la page PyPI. (Connexion requise)

C'est assez amusant.

De côté

Comme setuptools est intégré à distribuer, seul setuptools est importé, mais Avant l'intégration, les packages à importer étaient séparés par setup.py sous la forme suivante.

setup.py


try:
    import setuptools
except ImportError:
    from distribute_setup import use_setuptools
    use_setuptools()
from setuptools import setup, find_packages

Distribute_setup.py a été supprimé d'ici (je ne peux pas y accéder pour le moment), et il a été inclus dans le package.

C'était bien d'être unifié avec les outils de configuration. (Cet article peut être possible car il ne considère pas la compatibilité descendante ...)

Recommended Posts

Inscription auprès de PyPI à partir de la bibliothèque Python moderne faite par vous-même
compilateur x86 réalisé avec python
Avec skype, notifiez avec skype de python!
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
Package d'exécution Python et bibliothèque pypi avec chef / omnibus et Docker
Utilisation de Rstan de Python avec PypeR
Configurer un environnement Python moderne avec Homebrew
Installez Python à partir des sources avec Ansible
Exécutez Aprili depuis Python sur Orange
[HyperledgerIroha] Requête avec la bibliothèque Python
Charger fbx depuis python avec cinema4d
Analyse de régression logistique Self-made avec python
Collecter des informations sur Twitter avec Python (API Twitter)
Recevoir des données textuelles de mysql avec python
Obtenir le code HTML de l'élément avec du sélénium Python
[Note] Obtenir des données de PostgreSQL avec Python
Lire un fichier audio à partir de Python avec interruption
Créez wordcloud à partir de votre tweet avec python3
Tweet de python avec Twitter Developer + Tweepy
Efficacité commerciale à partir de zéro avec Python
Décrypter les fichiers cryptés avec openssl depuis python avec openssl
[Python] Enregistrez votre propre bibliothèque dans PyPI
Utiliser le chiffrement de la bibliothèque de chiffrement avec l'image Python de Docker
Manipulation d'Azure CosmosDB à partir de Python Part.2
Acquisition d'images depuis une caméra avec Python + OpenCV
Premiers pas avec Dynamo de Python boto
Essayez le scraping HTML avec la bibliothèque Python
Publiez votre propre bibliothèque Python sur Homebrew
Utilisation des fonctions C ++ de python avec pybind11
[Python] Obtenez des informations sur le package Python avec l'API PyPI
Créez un environnement Python moderne avec Neovim
Rendre la bibliothèque créée par Eigen of C ++ disponible à partir de Python avec Boost.Numpy.
J'ai enregistré PyQCheck, une bibliothèque qui peut effectuer QuickCheck avec Python, dans PyPI.
Collecter des informations depuis Twitter avec Python (construction de l'environnement)
[Personal memo] julia --Utiliser la bibliothèque Python avec Julia en utilisant PyCall
Sortie CSV de la recherche Google avec [Python]! 【Facile】
Résumé de la comparaison des bibliothèques pour générer des PDF avec Python
Essayez d'utiliser la bibliothèque Studio à partir de Python. [Anim Save]
Envelopper C avec Cython pour une utilisation à partir de Python
~ Conseils pour les débutants de Python donnés avec amour par Pythonista ① ~
Rendre OpenCV3 disponible à partir de python3 installé avec pyenv
Traitement d'image à partir de zéro avec python (4) Extraction de contour
Générez une instruction d'insertion à partir de CSV avec Python.
Gérez bien AWS avec la bibliothèque Python Boto
Appelez la bibliothèque Python pour la normalisation de texte depuis MATLAB
Créer un arbre de décision à partir de 0 avec Python (1. Présentation)
Installez vim7.3 (+ python2.4) depuis la source (compatible avec Gundo.vim)
Envelopper C ++ avec Cython pour une utilisation à partir de Python
Lire ligne par ligne à partir d'un fichier avec Python
Convertir JSON en CSV avec Python de Splunk
De la construction d'environnement Python à la construction d'environnement virtuel avec anaconda
Extraire des données d'une page Web avec Python
FizzBuzz en Python3
Grattage avec Python
Bibliothèque Python AST
Statistiques avec python
Grattage avec Python
Python avec Go
Intégrer avec Python