web-dev-qa-db-fra.com

Impossible d'installer des 'secrets' sur python 3.5 (pip, ubuntu 3.5)

J'essaie d'utiliser la bibliothèque secrets on Python 3.5 sur Ubuntu 16.04. Elle ne vient pas avec l'installation python et je ne suis pas en mesure de l'installer via pip. Existe-t-il un moyen de le faire fonctionner sur python 3.5?

9
Harshwardhan Jain

Le fait qu'il n'y ait pas de module PyPi pour cela et qu'Ubuntu utilise d'anciennes versions python est assez ennuyeux, ce serait bien si quelqu'un pouvait résoudre ce problème. En attendant:

Pour générer des secrets dans les anciennes versions de Python (> = 2.4 et <= 3.5), vous pouvez utiliser la fonction urandom de la bibliothèque os .

Exemple:

from os import urandom

urandom(16) # same as token_bytes(16)
urandom(16).hex() # same as token_hex(16) (python >=3.5)

Pour rendre quelque chose de rétrocompatible qui utilise toujours la nouvelle bibliothèque de secrets lorsqu'elle est prise en charge, vous pouvez faire quelque chose comme

try:
    from secrets import token_hex
except ImportError:
    from os import urandom
    def token_hex(nbytes=None):
        return urandom(nbytes).hex()
14
Bitbored

Vous pouvez utiliser le backport du module secrets pour Python 2.7, 3.4 et 3.5 sous le nom de python2-secrets. (le nom est un peu déroutant à mon avis)

Installation:

pip install --user python2-secrets
6
Vicente

Le module que vous essayez d'utiliser ne faisait pas partie de Python à partir de la version 3.5.

Il semble que dans cette version, les secrets ne peuvent pas être téléchargés depuis pip non plus

$ pip install secrets
Collecting secrets
 Could not find a version that satisfies the requirement secrets (from versions: ) No matching distribution found for secrets

Lorsque vous travaillez sous un environnement Python 3.6, ce module peut être importé immédiatement, car il fait partie de la bibliothèque standard:

Python 3.6.3 (default, Mar  7 2018, 21:08:21)  [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information.
>>> import secrets
>>> print(secrets)
<module 'secrets' from '/home/mikel/.pyenv/versions/3.6.3/lib/python3.6/secrets.py'>
2
WorkShoft

Si vous jetez un œil à PEP 506 , la proposition explique comment secrets est implémentée et pointe vers un référentiel Bitbucket par l'auteur du package lui-même, qui fait maintenant partie de la bibliothèque standard Python Standard!

0
rite2hhh

Dans Python 3.x utilisez pip install secret au lieu

0
Mohamed Abdillah