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?
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()
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
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'>
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!
Dans Python 3.x utilisez pip install secret
au lieu