Как запустить / отладить оптимизированное приложение из 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 .

Другие вопросы по тегам