Рейтинг:2

source venv/bin/activate ничего не возвращает в CentOS

флаг im

Я пытаюсь развернуть приложение Python Flask (для конечной точки API) в CentOS для работы, но каждое онлайн-руководство, которому я следовал, не работает для меня!

python3 -m venv APIenv

Env был успешно создан, но затем пытаюсь его активировать:

исходный APIenv/bin/активировать

Ничего не возвращает, ни ошибки не активирует!

насколько я понял, при его активации CLI должен выглядеть так:

(венв) $ _

У меня также есть другая проблема:

pip3 установить firebase_admin

это сработало, и оно было установлено, но затем запустило мое приложение:

приложение python3.py

Traceback (последний последний вызов): Файл "app.py", строка 4, в импортировать firebase_admin ModuleNotFoundError: нет модуля с именем «firebase_admin»

Каждое онлайн-руководство, которому я следовал, заставляет меня застрять здесь, мне действительно нужно, чтобы это работало, что я делаю неправильно?

Рейтинг:3
флаг us

Вероятно, у вас есть pip3, связанный с другой версией python (3.6, 3.8 и т. д.), чем python3, который вы используете.

Убедитесь, что вы используете те же версии, и они действительно находятся в venv. проверить python3

# python3 -V
Питон 3.8.6
# какой питон3
/tmp/APIenv/bin/python3
# ls -laht /tmp/APIenv/bin/python3
lrwxrwxrwx 1 root root 8 30 сентября 13:59 /tmp/APIenv/bin/python3 -> python38

Проверить пип3

# пип3 -V
pip 19.3.1 из /tmp/APIenv/lib64/python3.8/site-packages/pip (python 3.8)
# какой пип3
/tmp/APIenv/bin/pip3
# ls -laht /tmp/APIenv/bin/pip3
-rwxr-xr-x 1 root root 225 30 сентября 13:59 /tmp/APIenv/bin/pip3

иногда это может выглядеть так даже под VENV:

# какой питон38
/tmp/APIenv/bin/python38
# ls -laht /tmp/APIenv/bin/python38
lrwxrwxrwx 1 root root 17 30 сентября 13:59 /tmp/APIenv/bin/python38 -> /usr/bin/python38

Затем проверьте пути вашего интерпретатора pip и python, чтобы убедиться, что вы можете использовать его по абсолютному пути вашего venv.

Обновлено:

Проблема, связанная с версией python3.6.

firebase_admin не может быть установлен с версией python3.6

Требуется как минимум python3.8 (3.7 не тестировался)

Установка Python38 для Centos 8 и связанных модулей вопросов:

dnf установить python38 python38-pip
pip38 установить флягу firebase_admin venv
KiDo avatar
флаг im
python3 -V => Python 3.6.8 | который python3 => /bin/python3 | Что касается pip: pip3 -V => pip 9.0.3 из /usr/lib/python3.6/site-packages (python 3.6) | который pip3 => /bin/pip3 | Проблема в том, что Python 3.6.8, а pip всего 3.6?
флаг us
нет, это не проблема, это вывод под VENV? как я вижу, есть пути к системной среде, а не из виртуальной среды, это выглядит как проблема
KiDo avatar
флаг im
Извините, я не понял, если это поможет, я использую root, установил python и pip, прежде чем переходить в каталог venv
флаг us
вы должны активировать виртуальную среду с помощью команды `source APIenv/bin/activate`, тогда вы увидите такой префикс в оболочке `(venv) $ _`, затем выполните команды `pip3 install firebase_admin` и `python3 app.py`, все это в виртуальной среде, которую вы можете заметить по префиксу `(venv) $ _`
KiDo avatar
флаг im
Я пытаюсь это сделать, но ничего не возвращает, как вы упомянули, оболочка должна измениться на ```(venv) $```, но в моем случае она останется прежней ```[root@ MyAPI]#```
флаг us
Итак, у вас есть 2 проблемы, одна из которых связана с активацией venv и второй. Я почти уверен, что проблема с `pip3 install firebase_admin` из-за того, что версия python3.6 firebase_admin пытается установить, но в конце не удалась, вам следует установить более новую версию python, по крайней мере 3.8, затем запустите что-то вроде «pip38 install firebase_admin flask venv» и повторите шаги из вашего вопроса выше, но с использованием новой версии с «python38» вместо python3
KiDo avatar
флаг im
Я выполнил эти шаги, и все, кажется, работает, единственная оставшаяся проблема заключается в том, что я все еще не могу получить к нему доступ с помощью общедоступного IP-адреса (другие ПК), я запускаю его с помощью: «flask run --host=0.0. 0.0``` и я открыл порт 5000, но попытка проверить его с помощью Postman возвращает Connection Time Out
флаг us
попробуйте очистить правила iptables, если это возможно, с помощью `iptables -F` и проверьте соединение, если оно будет работать, вы можете создать правило принятия iptables для этого порта, если это не поможет - предоставьте мне вывод терминала flask во время запуска.
KiDo avatar
флаг im
[root@MyAPI]# запуск фляги --host=0.0.0.0 * Приложение Serving Flask 'app.py' (ленивая загрузка) * Окружающая среда: производство ВНИМАНИЕ: Это сервер разработки. Не используйте его в рабочей среде нт. Вместо этого используйте рабочий сервер WSGI. ...
KiDo avatar
флаг im
* Режим отладки: выключен * Работает по всем адресам. ВНИМАНИЕ: Это сервер разработки. Не используйте его в рабочей среде нт. * Работает на http://serverIP:5000/ (для выхода нажмите CTRL+C)
флаг us
что такое `serverIP:5000` ?, там должно быть `Работает на http://0.0.0.0:5000/`, у вас есть строка app.run, подобная этой `app.run(host='0.0.0.0', port= 5000) внутри приложения или оно выглядит иначе? также у вас должен быть действительно общедоступный IP-адрес (который не относится к частному диапазону)
KiDo avatar
флаг im
serverIP — это IP-адрес моего сервера: «xx.xx.xx.xx:5000», а в app.run у меня просто «app. run()», потому что в руководстве по Flask сказано, что мне просто нужно запустить эту команду, чтобы сделать ее общедоступной: «flask run — host=0.0.0.0», и у меня есть общедоступный IP-адрес, это… s, где размещен мой веб-сайт WordPress.
флаг us
если вы так говорите и не можете подключиться с общедоступным IP-адресом и портом 5000, это проблема сети на стороне ОС сервера (связанная с правилами входного соединения) или на вашей стороне (маршрутизатор, интернет-провайдер и т. д., что-то, что может блокировать выход, подключается к 5000), вы можете предоставить вывод `iptables-save`, тогда я посмотрю, есть ли какая-то проблема
KiDo avatar
флаг im
ОМГ ты прав! Я попытался получить к нему доступ, используя другую сеть, и это сработало! Вы гений, и у меня нет слов, чтобы выразить свою признательность и благодарность за вашу помощь! У меня только один последний вопрос, как мне заставить его работать в фоновом режиме?
флаг us
Вы можете следить за моим ответом на этот вопрос, чтобы запустить его как службу systemd: https://serverfault.com/questions/1078666/how-do-i-create-a-python-3-service-that-uses-socket-with-systemd/1079133#1079133

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.