Нечетный вывод при попытке установить секретный ключ Flask

1

Я пытаюсь разработать, как развернуть приложение 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'
Теги:
flask
byte

1 ответ

1
Лучший ответ

Вы должны использовать 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), а не столько, сколько случайная строка, которую вы создали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню