我正在尝试在Ubuntu 16.04上的Python 3.5上使用库 secrets 。它不附带python安装,我无法通过pip安装它。有没有办法让它在python 3.5上运行?
答案 0 :(得分:9)
没有为此提供PyPi模块,而Ubuntu使用古老的python版本的事实非常令人讨厌,如果有人可以解决此问题,那就太好了。同时:
要在旧版本的Python(> = 2.4和<= 3.5)中生成秘密,可以使用urandom
function from the os library。
示例:
from os import urandom
urandom(16) # same as token_bytes(16)
urandom(16).hex() # same as token_hex(16) (python >=3.5)
要使某些向后兼容的东西在支持时仍使用新的秘密库,您可以执行类似的操作
try:
from secrets import token_hex
except ImportError:
from os import urandom
def token_hex(nbytes=None):
return urandom(nbytes).hex()
答案 1 :(得分:2)
对于名称为 python2-secrets 的Python 2.7、3.4和3.5,可以使用secrets模块的反向端口。 (这个名字在我看来有点令人困惑)
安装:
pip install --user python2-secrets
答案 2 :(得分:1)
从3.5版开始,您尝试使用的模块不是Python的一部分。
看起来那个版本的密码不能从pip下载
$ pip install secrets
Collecting secrets
Could not find a version that satisfies the requirement secrets (from versions: ) No matching distribution found for secrets
在Python 3.6环境下工作时,可以立即导入模块,因为它是标准库的一部分:
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'>
答案 3 :(得分:0)
如果您查看PEP 506,则该提案讨论了secrets
的实现方式,并指出了包本身的作者Bitbucket repository,而该包现在已成为包的一部分。官方Python标准库!
答案 4 :(得分:0)
在Python 3.x中,请改用pip install secret