Python - Explication et résumé de l'utilisation des 24 meilleurs packages

Avec pip install, nous avons extrait les 20 meilleurs paquets du PyPi familier par téléchargements totaux et hebdomadaires. Ceci est un résumé de la façon d'utiliser les 24 packages populaires. J'ai été surpris du résultat de 16 chevauchements au total pour la semaine. Je ne savais pas comment utiliser uniquement le package pyasn1 qui gère ASN.1, alors faites-le moi savoir.

Classement des téléchargements PyPi

スクリーンショット 2015-11-20 14.16.23.png

1.simplejson Une bibliothèque qui encode et décode json. Nous sommes fiers du nombre de DL de plus de 100 millions dans le package qui est le meilleur global et hebdomadaire. Pour la vitesse uniquement, ujson est plus rapide.

simplejson_1.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import simplejson

# dict to json
d = {i: i**3 for i in xrange(10)}
json_str = simplejson.dumps(d)
print(type(json_str), json_str)

# json to dict
json_dict = simplejson.loads(json_str)
print(type(json_dict), json_dict)

Résultat d'exécution


>>>python simplejson_1.py 
(<type 'str'>, '{"0": 0, "1": 1, "2": 8, "3": 27, "4": 64, "5": 125, "6": 216, "7": 343, "8": 512, "9": 729}')
(<type 'dict'>, {'1': 1, '0': 0, '3': 27, '2': 8, '5': 125, '4': 64, '7': 343, '6': 216, '9': 729, '8': 512})

2.setuptools Logiciel de gestion de paquets. easy_install est également l'une des fonctionnalités de setuptools. Il est souvent installé en premier pour installer pip, qui gère également les packages. L'installation de pip installera les outils de configuration. distribuer a été fusionné avec setuptools en 2013. Depuis Python 3.4, pip est inclus dans le corps de Python. Voir PEP453 pour plus de détails.

3.requests Requests est une bibliothèque HTTP conçue pour être facile à utiliser pour les utilisateurs. Vous pouvez écrire de manière concise HTTP GET, POST, l'authentification de base et l'authentification OAuth 2.0.

requests_3.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import requests
import simplejson

#Code vers HTTP GET vers l'API qui répond avec le type json
host = "api-sandbox.oanda.com"
url = "https://{}/v1/candles?instrument=EUR_USD&count=100&candleFormat=midpoint&" \
      "granularity=D&dailyAlignment=0&alignmentTimezone=America%2FNew_York".format(host)
response = requests.get(url)
#HTTP STATUS est normal
assert response.status_code == 200
data = simplejson.loads(response.text)
print(type(data), data)

Résultat d'exécution


>>>python ./requests_3.py 
(<type 'dict'>, {u'instrument': u'EUR_USD', u'candles': [{u'complete': True, u'closeMid': 1.09102, u'highMid': 1.09347, u'lowMid': 1.084825, u'volume': 31402, u'openMid': 1.0863, u'time': u'2015-08-05T04:00:00.000000Z'}, {u'complete': True, u'closeMid': 1.09141, u'highMid': 1.0944, u'lowMid': 1.08735, u'volume': 22130, u'openMid': 1.09104, u'time': 
...

4.virtualenv Vous pouvez facilement créer plusieurs environnements Python sur un seul terminal. Je bascule entre l'environnement Python2.7 + Django1.5, l'environnement PyPy et l'environnement Python3.5.

Installation, construction de l'environnement, utilisation


# install
sudo pip install virtualenv
sudo pip install virtualenvwrapper

#construction de l'environnement hoge
mkvirtualenv --python=/usr/local/bin/python3 hoge

#Liste d'environnement
workon

#Changement d'environnement
workon hoge

#Sortez de l'environnement
deactivate

5.distribute Logiciel de gestion de paquets. L'installation de pip installe setuptools et distribue a été fusionnée dans setuptools en 2013. Par conséquent, il n'y a aucun problème si la gestion des packages est effectuée avec pip.

6.six six est une bibliothèque de compatibilité Python 2 et 3. Fournit des fonctions utilitaires pour écrire un code unique qui fonctionne dans les systèmes 2 et 3.

six_6.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import six

#Exécuter dans l'environnement python2
print (six.PY2, six.PY3)


#Utilisez la classe méta de 3 séries dans l'environnement de la série python2
class ABCMeta(type):
    pass


@six.add_metaclass(ABCMeta)
class MyABC(object):
    pass

abc = MyABC()
print abc

Résultat d'exécution


>>>python six_6.py 
(True, False)
<__main__.MyABC object at 0x101d02550>

7.pip Logiciel de gestion de packages Python. Il existe d'autres logiciels de gestion de paquets tels que setuptools et distribuer, mais si vous vous perdez, je pense que la bonne réponse est d'utiliser pip pour gérer les paquets en principe. Il y a un arrière-plan dans lequel il a été développé car easy_install était impopulaire et il a été inclus dans Python lui-même depuis Python 3.4. Détails PEP453

Installez pip lui-même-pip.Facile à utiliser py.


curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

8.certifi certifi est une bibliothèque qui vérifie précisément l'authenticité des certificats SSL à l'aide de l'autorité de certification racine (CA). Plutôt que de l'utiliser seul, il est souvent installé en même temps car il dépend d'autres bibliothèques.

certifi_8.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import certifi
#Autorité de certification racine(CA)Sortie de l'emplacement d'installation du fichier de
print(certifi.where())

Résultat d'exécution


>>>python ./certifi_8.py 
/xxxxx/lib/python2.7/site-packages/certifi/cacert.pem

9.boto Une interface pour faire fonctionner Amazon Web Services à partir de Python. D'après ma propre expérience, je l'ai utilisé pour extraire la liste des serveurs de la destination de déploiement à partir de la balise définie dans l'instance EC2 au moment du déploiement, ou pour accéder à S3 et obtenir la liste des fichiers.

Accéder au seau s3 avec boto


import boto
from boto.s3.key import Key
import boto.s3.connection

AWS_ACCESS_KEY_ID = '<access key>'
AWS_SECRET_ACCESS_KEY = '<my secret key>'
Bucketname = 'Bucket-name' 


conn = boto.s3.connect_to_region('ap-southeast-1',
       aws_access_key_id=AWS_ACCESS_KEY_ID,
       aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
       is_secure=True,               # uncommmnt if you are not using ssl
       calling_format = boto.s3.connection.OrdinaryCallingFormat(),
       )
bucket = conn.get_bucket(Bucketname)

10.pbr Une bibliothèque pour gérer de manière cohérente setuptools. Vous pouvez écrire les informations de package dans Setup.cfg au format Metadata2.0 sans écrire les informations de package dans setup.py. Les valeurs par défaut sont entrées dans setup.cfg pour unifier le format de chaque bibliothèque.

setup.py


import setuptools
from pbr import util

setuptools.setup(
    **util.cfg_to_args())

setup.cfg


[metadata]
name = pbr
author = OpenStack
author-email = [email protected]
summary = Python Build Reasonableness
...

11.wincertstore Le magasin wincert fournit une interface pour accéder aux certificats d'autorité de certification Windows et aux CRL (listes de révocation de certificats). Plutôt que de l'utiliser seul, je pense qu'il est souvent installé avec d'autres packages.

12.python-dateutil Étend le module datetime standard Python. Vous pouvez calculer la fin du mois, calculer le «prochain ◯ jour» et calculer le «dernier ◯ jour du mois». Comme je ne l'ai jamais utilisé, je l'ai implémenté en me référant à Comment utiliser python-dateutil.

python-dateutil.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from dateutil.relativedelta import relativedelta, FR
from datetime import date
import calendar

#Calculez la fin du mois et renvoyez le 30 novembre correctement
print "Calcul de fin de mois:", date(2015, 11, 26) + relativedelta(day=31)

#Retour mardi prochain
print "Mardi prochain:", date(2015, 11, 28) + relativedelta(weekday=calendar.TUESDAY)

#Dernier vendredi du mois
first_day = date(2015, 11, 1)
rdl = relativedelta(day=31, weekday=FR(-1))
print "Dernier vendredi du mois:", first_day + rdl

Résultat d'exécution


>>>python ./python-dateutil.py 
Calcul de fin de mois: 2015-11-30
Mardi prochain: 2015-12-01
Dernier vendredi du mois: 2015-11-27

13.Jinja2 C'est un moteur de template créé par Python. Il peut être utilisé avec Google App Engine. Comme le dit le document, "C'est un moteur de template qui est conscient de Django Template", cela peut être facile pour les personnes qui utilisent Django. Dans un simple PJ, je pense que ce sera une option quand ce sera "Fat (fat) with Django".

14.nose Un framework de test unitaire qui facilite l'écriture de tests unitaires. La fonction assert est suffisante pour une utilisation simple, mais lorsque vous générez plusieurs fichiers de test et que vous les testez tous à la fois, il est pratique d'utiliser la commande nosetest pour tester tous les fichiers py dont les noms de fichier commencent par "test".

test_nose_14.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from unittest import TestCase
from nose.tools import ok_, eq_


def sum(a, b):
    return a + b


def is_even(n):
    return (n % 2 == 0)


class HogeTestCase(TestCase):
    def setUp(self):
        print 'before test'

    def tearDown(self):
        print 'after test'

    def test_sum(self):
        eq_(sum(1, 2), 3)
        eq_(sum(5, 11), 16)
        eq_(sum(0, 0), 0)
        #Erreur
        eq_(sum(0, 0), 10000)

    def test_is_even(self):
        ok_(is_even(2))
        ok_(not is_even(3))
        #Si vous donnez une erreur avec assert, cela ne fonctionne pas correctement
        assert is_even(15)

Résultat d'exécution


>>>nosetests
FF
======================================================================
FAIL: test_is_even (test_nose_14.HogeTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/xxxx/qiita/pypi_ranking/test_nose_14.py", line 33, in test_is_even
    assert is_even(15)
AssertionError: 
-------------------- >> begin captured stdout << ---------------------
before test

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: test_sum (test_nose_14.HogeTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/xxxx/qiita/pypi_ranking/test_nose_14.py", line 27, in test_sum
    eq_(sum(0, 0), 10000)
AssertionError: 0 != 10000
-------------------- >> begin captured stdout << ---------------------
before test

--------------------- >> end captured stdout << ----------------------

----------------------------------------------------------------------
Ran 2 tests in 0.005s

FAILED (failures=2)

15.lxml Une bibliothèque pour analyser la syntaxe XML. Il est souvent utilisé pour des bibliothèques plus spécialisées en enveloppant lxml. Beutiful Soup peut être un exemple typique.

lxml_15.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import requests
from lxml import html

# HTTP GET
url = "http://google.co.jp/"
response = requests.get(url)

#Analyser avec lxml
root = html.fromstring(response.text)

#Une sortie de balise
anchors = root.xpath('//a')
for anchor in anchors:
    print(anchor.attrib['href'])

Résultat d'exécution


>>>python lxml_15.py 
http://www.google.co.jp/imghp?hl=ja&tab=wi
http://www.google.co.jp/maps?hl=ja&tab=wl
https://play.google.com/?hl=ja&tab=w8
...

16.docutils Si vous définissez le document au format reStructuredText, vous pouvez générer des fichiers HTML, XML, Latex avec une seule source.

17.MarkupSafe Vous pouvez générer des chaînes sécurisées échappées au format XML / HTML / XHTML.

mks_17.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from markupsafe import Markup, escape

#échapper
print "Sortie d'échappement:", escape("<script>alert(document.cookie);</script>")

#Marquer
tmpl = Markup("<em>%s</em>")
print "Sortie de balisage:", tmpl % "Peter > Lustig"

Résultat d'exécution


>>>python ./mks_17.py 
Sortie d'échappement: &lt;script&gt;alert(document.cookie);&lt;/script&gt;
Sortie de balisage: <em>Peter &gt; Lustig</em>

18.pyasn1 ASN.1 est un langage pour "définir la structure de l'information". Les informations dont la structure est définie par ASN.1 sont appelées "objet ASN.1". pyasn1 est une bibliothèque pour définir ASN.1 en python. Je l'ai écrit en référence au manuel du programmeur PyASN1. S'il est bien utilisé, je pense que vous pouvez implémenter le traitement de sérialisation et de désérialisation. Si quelqu'un sait comment l'utiliser, faites-le moi savoir.

スクリーンショット 2015-11-20 13.36.08.png

pyasn1_18.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from pyasn1.type import univ
"""
Définition
;; values specification
age-of-universe INTEGER ::= 13750000000
mean-martian-surface-temperature INTEGER ::= -63
"""

ageOfUniverse = univ.Integer(13750000000)
print ageOfUniverse

meanMartianSurfaceTemperature = univ.Integer(-63)
print meanMartianSurfaceTemperature

Résultat d'exécution


>>>python ./pyasn1_18.py 
13750000000
-63

19.PyYAML YAML est un format de sérialisation de données conçu pour la lisibilité humaine et l'interaction avec le langage de script. PyYAML est un analyseur YAML pour Python. Le protocole API est défini comme yaml et le même modèle est partagé entre Python et d'autres langages, et il est utilisé lors du mappage lorsque les données Excel sont converties en json.

pyyaml_19.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import yaml

yaml_str = """
fields:
- column: id
  name: ID
  type: int
  validate:
    unique: true

- column: campaign_id
  name:ID de campagne
  type: int

- column: description
  name:Explication détaillée de la campagne
  type: char
"""

y = yaml.load(yaml_str)
print type(y), y

Résultat d'exécution


>>>python ./pyyaml_19.py 
<type 'dict'> {'fields': [{'column': 'id', 'validate': {'unique': True}, 'type': 'int', 'name': 'ID'}, {'column': 'campaign_id', 'type': 'int', 'name': u'\u30ad\u30e3\u30f3\u30da\u30fc\u30f3ID'}, {'column': 'description', 'type': 'char', 'name': u'\u30ad\u30e3\u30f3\u30da\u30fc\u30f3\u8a73\u7d30\u8aac\u660e'}]}

20.pytz Définition du fuseau horaire global pour Python. Par exemple, vous gérez généralement l'heure avec utc + 0, et vous pouvez écrire de manière concise le processus à sortir avec l'heure japonaise utc + 9 uniquement lorsqu'elle est affichée.

pytz_20.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from datetime import datetime
import pytz

#la norme
print datetime.now()

#Heure du Japon
jst = datetime.now(tz=pytz.timezone('Asia/Tokyo'))
print jst

#L'heure de New York
nyt = datetime.now(tz=pytz.timezone('US/Eastern'))
print nyt

#Différence de temps
print "diff:", nyt - jst

Résultat d'exécution


>>>python ./pytz_20.py 
2015-11-20 13:56:54.633965
2015-11-20 13:56:54.661743+09:00
2015-11-19 23:56:54.665424-05:00
diff: 0:00:00.003681

10e place par semaine. Pycrypto

Boîte à outils de chiffrement Python. Nous proposons une variété d'algorithmes et de protocoles cryptographiques.

Effectuer le cryptage et le décryptage AES


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from Crypto.Cipher import AES
import base64
import os

#Taille du bloc d'objet de chiffrement; 16, 24, or 32 for AES
BLOCK_SIZE = 32

#S'il est inférieur à la longueur du bloc, remplissez-le avec Padding
PADDING = '{'

#Une fonction qui remplit la pièce moins que la longueur du bloc avec Paddng
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING

#Fonctions de cryptage et de décryptage en base64
EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)

#Générer une clé secrète de manière aléatoire
secret = os.urandom(BLOCK_SIZE)

#Créer un objet Cipher avec une clé secrète
cipher = AES.new(secret)

#Crypter la chaîne
encoded = EncodeAES(cipher, 'password')
print 'Encrypted string:', encoded

#Décrypter une chaîne
decoded = DecodeAES(cipher, encoded)
print 'Decrypted string:', decoded

Résultat d'exécution


>>>python ./aes_w10.py 
Encrypted string: P2vLpfpZgQyh1DPiY7a9TQfjGIiw3HcCh1qBxBwvtBk=
Decrypted string: password

16e place par semaine. Cffi

Interface de fonction externe pour appeler le code C.

cffi_w16.py


from cffi import FFI

ffi = FFI()
ffi.cdef("""
int printf(const char *format, ...);   // copy-pasted from the man page
""")
C = ffi.dlopen(None)  # loads the entire C namespace
arg = ffi.new("char[]", "world")  # equivalent to C code: char arg[] = "world";
C.printf("hi there, %s.\n", arg)  # call printf

Résultat d'exécution


>>>python ./cffi_w16.py 
hi there, world.

17e place par semaine. Colorama

Vous pouvez colorer le texte sur la console.

colorama_w17


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from colorama import Fore, Back, Style
print(Fore.RED + 'Akairo!')
print(Back.GREEN + 'Mot rouge+Hayei Midori')
print(Style.DIM + '+Personnages brumeux')
print(Style.RESET_ALL)
print('Couleur du texte après réinitialisation')

■ Résultat de l'exécution スクリーンショット 2015-11-20 17.03.17.png

20e place par semaine. Rsa

Implémentation RSA. Il prend en charge le cryptage et le décryptage, la vérification de la signature et de la signature et la génération de clés. ..

rsa_w20.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import rsa

#Génération de clés
(bob_pub, bob_priv) = rsa.newkeys(512)

#chiffrement
message = 'hello Bob!'.encode('utf8')
crypto = rsa.encrypt(message, bob_pub)
print crypto

#Composite
message = rsa.decrypt(crypto, bob_priv)
print(message.decode('utf8'))

Résultat d'exécution


>>>python ./rsa_w20.py 
i??u)"?}%??4?????4????:?n?Z????A?6?>?XF[/?XA%usc?ؙ?
hello Bob!

référence

PyPI Ranking Résumé de la technologie de gestion des packages Python Comment utiliser python-dateutil

Lorsque l'exemple de code a été écrit sur la page d'accueil PyPi du package, il était assez facile d'avoir une vue d'ensemble, j'ai donc décidé de l'imiter. Les 21e à 50e bibliothèques du classement hebdomadaire sont alignées avec des bibliothèques intéressantes telles que sqlalchemy et supervisord, donc j'aimerais les utiliser un jour.

Recommended Posts

Python - Explication et résumé de l'utilisation des 24 meilleurs packages
L'histoire de Python et l'histoire de NaN
Résumé des index et des tranches Python
[Python] Visualisez la chaleur de Tokyo et de la préfecture ○○ (mémo d'utilisation de DataFrame)
Résumé de la correspondance entre les opérations de tableau ruby et python
La réponse de "1/2" est différente entre python2 et 3
Spécification de la plage des tableaux ruby et python
Installation de Python 3 et Flask [Résumé de la construction de l'environnement]
Comparez la vitesse d'ajout et de carte Python
Résumé relatif aux E / S de python et fortran
Organisez l'utilisation super basique des Autotools et de pkg-config
Prise en compte des forces et faiblesses de Python
Explication de la distance d'édition et de l'implémentation en Python
[Python] Type de classe et utilisation du module datetime
Résumé de l'utilisation de pyenv
Paquets et modules Python
Utilisation des locaux Python ()
le zen de Python
Résumé des arguments Python
Explication du concept d'analyse de régression à l'aide de python Partie 2
L'histoire de Python sans opérateurs d'incrémentation et de décrémentation.
Le processus d'installation d'Atom et de l'exécution de Python
[Python] Erreur de type: résumé des causes et des solutions pour "Aucun type"
Visualisez la gamme d'insertions internes et externes avec python
Référence et modification de la limite supérieure récursive Python
J'ai vérifié les versions de Blender et Python
Explication du concept d'analyse de régression à l'aide de Python Partie 1
Résumé du flux de base de l'apprentissage automatique avec Python
[Python] Résumé de la façon de spécifier la couleur de la figure
Explication du concept d'analyse de régression à l'aide de Python Extra 1
Étude de Python Hour8: Utilisation de packages
Obtenez une compréhension abstraite des modules et des packages Python
[Introduction à Python] Utilisation basique de la bibliothèque matplotlib
Récapitulatif du traitement de la date en Python (datetime et dateutil)
[Python] Utilisation correcte de la carte
Vers la retraite de Python2
résumé lié à l'opération de fichier python
Résumé des opérations de liste Python3
Apprenez à connaître les packages et les modules Python
Explication et mise en œuvre de SocialFoceModel
Résumé d'utilisation pratique de Flask
Résumé de l'utilisation de base de Pandas
Exemple d'utilisation de pickle Python
Utilisation basique de la f-string Python
[Python] Utilisation correcte de la jointure
À propos des fonctionnalités de Python
Installation source et installation de Python
Le pouvoir des pandas: Python
[Python] Fonctionnalisation de la formule de Heron et calcul de la surface maximale
[python] Résumé de la récupération des listes et des éléments du dictionnaire
[Pour les débutants] Résumé de l'entrée standard en Python (avec explication)
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
Résumé de la prise en charge des opérations de hachage (dictionnaire) pour Ruby et Python
Le processus de création et d'amélioration du code Python orienté objet
Un résumé approximatif des différences entre Windows et Linux
Le websocket de toio (nodejs) et python / websocket ne se connecte pas.
Je veux connaître la nature de Python et pip
[Astuces] Problèmes et solutions dans le développement de python + kivy