Как запустить / отладить оптимизированное приложение из IDE
Мне очень нравится оптимизация в качестве среды для исследований, смешивание записной книжки / приборной панели, например, вывода, который я могу быстро разработать с чистым кодом для его определения (без ячеек и т. Д.) И возможностью влиять на мой код через виджеты во время его выполнения.
Для этой цели я искал способ запустить или даже отладить оптимизированное приложение, поскольку по умолчанию он запускается через командную строку:
streamlit run code.py
Есть ли способ сделать то же самое?
Ура
8 ответов
Я нашел способ хотя бы запустить код из IDE (в моем случае PyCharm). Вstreamlit run code.py
команда действительно вызывает python -m streamlit.cli run code.py
, чтобы его можно было настроить так, чтобы он запускался с IDE.
В моем случае -m streamlit.cli run
переходит в поле параметров интерпретатора конфигурации запуска / отладки, code.py переходит в поле Путь к сценарию, как и ожидалось.
К сожалению, такой способ отладки не работает, поскольку параметры, добавленные PyCharm, передаются в streamlit вместо отладчика pydev.
Изменить: только что нашел способ отлаживать свои собственные сценарии. Вместо отладки вашего скрипта вы отлаживаетеstreamlit.cli
модуль, который запускает ваш скрипт. Для этого вам нужно изменить сScript path:
к Module name:
в самом верхнем поле (там есть немного скрытый раскрывающийся список...). Затем вы можете вставитьstreamlit.cli
в поле. Теперь в качестве параметров вы добавляетеrun code.py
в Parameters:
в поле Run/Debug Configuration.
Если вы являетесь пользователем VS Code, вы можете отлаживать приложение Streamlit, добавив следующую конфигурацию в свой
launch.json
файл:
{
"name": "Python:Streamlit",
"type": "python",
"request": "launch",
"module": "streamlit.cli",
"args": [
"run",
"${file}",
"--server.port",
"SPECIFY_YOUR_OWN_PORT_NUMBER_HERE" ]
}
Указание номера порта позволяет запускать приложение на фиксированном номере порта каждый раз, когда вы запускаете сценарий отладки.
После обновления файла launch.json вам необходимо перейти на вкладку "Выполнить" в левом желобе приложения VS code и сообщить ему, какую конфигурацию Python следует использовать для отладки приложения:
Выбор конфигурации отладки для интерпретатора Python
Спасибо git-steb за то, что указал мне на решение!
Я придумал альтернативное решение, которое позволяет вам использовать отладку PyCharm естественным образом. Просто создайте сценарий запуска (который я называюrun.py
что выглядит так:
from streamlit import bootstrap
real_script = <name of your script>
bootstrap.run(real_script, f'run.py {real_script}', [])
и настройте это как обычную конфигурацию запуска Python в PyCharm.
12 августа 2022 г.: обновитеpip and streamlit
версии. Иногда необходимо обновить все обе версии.
pip install pip --upgrade
pip install --upgrade streamlit
Откройте редактор Pycharm и перейдите вEdit Configuration
файл, как указано ниже на картинке. Не очищайте Streamlit в моем раскрывающемся списке. Нажмите на раскрывающийся список.
Конфигурации запуска/отладки:
Вы должны изменить три каталога, помните об этом.
1) Вы можете получить, набравwhich streamlit
в терминале и вставьте путь вscript path
.
2) щелкните рабочий каталог и укажите каталог вашего файла python, который содержит streamlit.
3) вParamaters:
дайте имя файла python, напримерapp.py
сrun.
Поскольку пользовательский интерфейс немного изменился, вот что я сделал, попробовав предложения Бена.
Следует отметить, что вы можете увидеть ошибки, если измените код во время использования отладчика. Перезапуск отладчика обычно решает проблему.
В окне «Конфигурация запуска/отладки» добавьте новую конфигурацию Python со следующими настройками:
- Убедитесь, что «Интерпретатор Python» настроен на созданную вами виртуальную среду и ваш «Рабочий каталог» правильный.
- Выбирать
module
из раскрывающегося списка «Запустить скрипт или модуль» - Входить
streamlit
в поле «Имя модуля» - В раскрывающемся списке «Изменить параметры» выберите
Add option
>Parameters
- Входить
run app.py
в поле «Параметры»
С некоторой модификацией ответа @aiwa - это сработало для меня в версии кода VS - 1.58
{
"configurations": [
{
"name": "Python:Streamlit",
"type": "python",
"request": "launch",
"module": "streamlit.cli",
"args": [
"run",
"${file}"
],
}
]
}
Не могу комментировать, поэтому я должен сформулировать это как ответ.
Дополнение к ответу @Ben (часть отладки модуля): если ваш скрипт нужно запускать с некоторыми
args
вы можете легко добавить их как
run main.py -- --option1 val1 --option2 val2
Обратите внимание на первый
--
с пробелом: необходимо остановить разбор аргументов streamlit и перейти к
main.py
анализ аргументов
Наряду с другими решениями, еще одним простым и быстрым решением является использованиеpdb
библиотека. Например;
st.dataframe(df)
import pdb; pdb.set_trace()
st.bar_chart(df)
Когда вы запускаете код, ваша среда IDE (или даже командная строка) останавливается в точке «установить трассировку», и в командной строке отображается что-то вроде этого:
(Pdb)>
В этом случае вы можете вызывать свои переменные и обрабатывать их в командной строке. Например:
Другие варианты библиотеки PDB см. на странице https://docs.python.org/3/library/pdb.html .