无法安装秘密'在python 3.5(pip,ubuntu 3.5)

时间:2018-03-11 09:09:19

标签: python python-3.x cryptography python-3.5

我正在尝试在Ubuntu 16.04上的Python 3.5上使用库 secrets 。它不附带python安装,我无法通过pip安装它。有没有办法让它在python 3.5上运行?

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