Я пытаюсь разработать, как развернуть приложение Flask. Документы говорят, что я могу сгенерировать секретный ключ с помощью команды Python:
python -c 'import os; print(os.urandom(16))'
В их примере это выводит b'_5#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 неактивен.
Если вы действительно используете Python 2 по какой-то причине, этот вывод тоже прекрасен. Скопируйте и вставьте его в кавычки, и он будет работать. Python 2 str
является сортировкой байтов, поэтому он выводит символы, отличные от ASCII, тогда как Python 3 всегда выводит байты с escape-символами (\xAB
). Любой выход будет работать в любой версии.
SECRET_KEY = '��L���vl�6��Z5'
SECRET_KEY = b'A\xa4\xf3O\xdd\xf4qr\xfb\x9b\x12\x1f*\x0bm\xdf'
Вывод примера содержит escape-символы (\n
и \xec
), а не столько, сколько случайная строка, которую вы создали.