Python 尝试设置密钥时的奇数输出

Python 尝试设置密钥时的奇数输出,python,flask,byte,Python,Flask,Byte,我正在研究如何部署Flask应用程序。假设我可以使用Python命令生成密钥: python -c 'import os; print(os.urandom(16))' 在他们的示例中,这输出了b“u5”y2L“F4Q8z\n\xec]/' 当我使用python运行它时,我会得到奇数字符,而使用python3我会得到字符代码。为什么python和python3版本不同?我应该使用哪一个 $ python -c 'import os; print(os.urandom(16))' ��L���

我正在研究如何部署Flask应用程序。假设我可以使用Python命令生成密钥:

python -c 'import os; print(os.urandom(16))'
在他们的示例中,这输出了
b“u5”y2L“F4Q8z\n\xec]/'

当我使用
python
运行它时,我会得到奇数字符,而使用
python3
我会得到字符代码。为什么
python
python3
版本不同?我应该使用哪一个

$ python -c 'import os; print(os.urandom(16))' 
��L���vl�6��Z5

$ python3 -c 'import os; print(os.urandom(16))'
b'A\xa4\xf3O\xdd\xf4qr\xfb\x9b\x12\x1f*\x0bm\xdf'

所有新项目都应该使用Python 3,因此这基本上不是问题。Python 3输出是正确的,可以直接进行复制粘贴。
Python
为您运行Python 2这一事实意味着您没有按照教程设置Python 3 virtualenv,或者您的virtualenv未处于活动状态

如果您真的出于某种原因使用Python 2,那么输出也可以。复制并粘贴到引号中,它就会工作。Python 2的
str
是一种字节,因此它输出非ASCII字符,而Python 3总是输出带有转义字符(
\xAB
)的字节。任何一种输出都可以在任何版本中工作

SECRET_KEY = '��L���vl�6��Z5'
SECRET_KEY = b'A\xa4\xf3O\xdd\xf4qr\xfb\x9b\x12\x1f*\x0bm\xdf'
示例输出确实包含转义字符(
\n
\xec
),只是没有生成的随机字符串那么多