У меня есть идея написать программу с использованием Python, которая найдет лирику песни, имя которой я предоставил. Я думаю, что весь процесс должен сводиться к паре вещей ниже. Вот что я хочу, чтобы программа делала, когда я ее запускаю:
- подскажите мне ввести название песни
- копировать имя
- откройте веб-браузер (например, google chrome)
- вставьте это имя в адресную строку и найдите информацию о песня
- откройте страницу, содержащую текст
- копировать текст
- запустите текстовый редактор (например, Microsoft Word)
- вставить текст
- сохранить новый текстовый файл с название песни
Я не прошу код, конечно. Я просто хочу знать понятия или идеи о том, как использовать Python для взаимодействия с другими программами
чтобы быть более конкретным, я думаю, что хочу знать, пример fox, просто как мы указываем, где находится адресная строка в Google Chrome и говорим python вставить имя там. Или как мы говорим python, как Скопировать текст, а также вставить его в лист Microsof Word, а затем сохранить его.
Удаленный рабочий стол средствами Python
Я читал (я все еще читаю) несколько книг по Python: Byte of python, Learn python The hard way, Python для чайников, начиная разработку игр с Python и Pygame. Тем не менее, я обнаружил, что кажется, что я только (или почти только) учусь создавать программы, которые работайте над собой (я не могу сказать своей программе, что я хочу делать с другими программами, которые уже установлены на моем компьютере)
Я знаю, что мой вопрос как-то звучит довольно глупо, но я действительно хочу знать, как это работает, как мы говорим Python regconize, что эта часть браузера Google chrome является адресной строкой и что она должна вставить имя песни в нее. Вся идея взаимодействия python с другой программой действительно очень расплывчата для меня, и я просто чрезвычайно хочу понять это.
спасибо всем, кто тратит свое время на чтение моего столь долгого вопроса.
5 ответов
если то, что вы действительно ищете, является хорошим предлогом, чтобы научить себя взаимодействовать с другими приложениями, это может быть не лучшим. Веб-браузеры грязные,сроки будут непредсказуемыми и т. д. Итак, вы взяли на себя очень трудную задачу-и это было бы очень легко, если бы вы сделали это обычным способом (поговорите с сервером напрямую, создайте текстовый файл напрямую и т. д. все, не касаясь каких-либо других программ).
но если вы хотите, чтобы взаимодействовать с другими приложениями, есть разнообразие различных подходов, и который подходит зависит от видов приложений, с которыми вам нужно иметь дело.
- некоторые приложения предназначены для автоматизации извне. В Windows это почти всегда означает, что они COM-интерфейс, обычно с интерфейсом IDispatch, для которого вы можете использовать pywin32 com-обертки; на Mac это означает интерфейс AppleEvent, для которого вы используете ScriptingBridge или appscript ; на других платформах нет универсального стандарта. Т. е. (но, вероятно, не Chrome) и Word имеют такие интерфейсы.
- некоторые приложения имеют интерфейс без GUI-будь то командная строка, которую вы можете управлять с popen , или DLL / SO / DYLIB вы можете загрузить через ctypes . Или, в идеале, кто-то уже написал привязки Python для вас.
- некоторые приложения не имеют ничего, кроме GUI, и нет никакого способа сделать автоматизацию GUI. Вы можете сделать это на низком уровне, создавая сообщения WM_ для отправки через pywin32 в Windows, используя API специальных возможностей на Mac и т. д. или на несколько более высоком уровне с библиотеками как pywinauto , или, возможно, на очень высоком уровне selenium или аналогичные инструменты, созданные для автоматизации конкретных приложений.
Итак, вы можете сделать это с чем угодно, от selenium для Chrome и COM automation для Word, чтобы создать все сообщения WM_ самостоятельно. Если это должно быть учебное упражнение, вопрос в том, какие из этих вещей вы хотите узнать сегодня.
Запуск внешних приложений с помощью python
давайте начнем с автоматизации COM. Используя pywin32 , вы напрямую получаете доступ к собственным интерфейсам сценариев приложения, без необходимости контролировать GUI от пользователя, выяснить, как перемещаться по меню и диалоговым окнам и т.д. Это современная версия написания «макросов Word» — макросы могут быть внешними скриптами вместо внутреннего Word, и их не нужно писать в VB, но они выглядят довольно похожими. Последняя часть вашего сценария выглядеть примерно так:
если вы посмотрите на Скрипты Microsoft Word, вы можете увидеть кучу примеров. Однако вы можете заметить, что они написаны в VBScript. И если вы посмотрите на учебники, все они написаны для VBScript (или более старого VB). И документация для большинства приложений написана для VBScript (или VB, .NET или даже низкоуровневого COM).
И все учебники, которые я знаю для использования com-автоматизации от Python, например Быстрый старт на стороне клиента COM и Python, написаны для людей, которые уже знают об автоматизации COM, и просто хотят знать, как это сделать с Python. Тот факт, что Microsoft постоянно меняет название всего, делает его еще сложнее искать-как бы вы догадались, что googling для Ole automation, ActiveX scripting, Windows Scripting House и т. д. имеет ли что-нибудь общее с изучением автоматизации COM? Итак, я не уверен, что рекомендовать для начала. Я могу обещать, что все так просто. посмотрите на этот пример выше, как только вы узнаете всю ерунду, но я не знаю, как преодолеть это начальное препятствие.
в любом случае, не каждое приложение является автоматизированным. И иногда, даже если это так, описание действий GUI (что пользователь будет нажимать на экран) проще, чем думать с точки зрения объектной модели приложения. «Выбрать третий абзац» трудно описать в терминах GUI, но «выбрать весь документ» легко-просто нажмите control-A или перейдите в меню редактирования и выбрать все. Автоматизация GUI намного сложнее, чем автоматизация COM, потому что вы либо должны отправить приложение те же сообщения, которые сама Windows отправляет для представления ваших действий пользователя (например, см.»Уведомления Меню») или, что еще хуже, создавать сообщения мыши, такие как» go (32, 4) пикселей из левого верхнего угла, нажмите, мышь вниз 16 пикселей, нажмите еще раз», чтобы сказать»открыть меню «Файл», затем нажмите «Создать».
к счастью, есть такие инструменты, как pywinauto это обернуть оба виды автоматизации GUI, чтобы сделать его намного проще. И есть такие инструменты, как swapy что может помочь вам выяснить, какие команды вы хотите отправить. Если вы не женаты на Python, есть также такие инструменты, как AutoIt и Actions это даже проще, чем с помощью swapy и pywinauto , по крайней мере, когда ты начал. Идя таким образом, последняя часть вашего скрипта может выглядеть так:
наконец, даже со всеми из этих инструментов веб-браузеры очень трудно автоматизировать, потому что каждая веб-страница имеет свои собственные меню, кнопки и т. д. это не элементы управления Windows, а HTML. Если вы не хотите пройти весь путь до уровня «переместить мышь на 12 пикселей», с этим очень сложно справиться. Вот где selenium входит-это скрипты веб-GUIs так же, как pywinauto скрипты Windows GUIs.
автор: abarnert
следующий скрипт использует Automa делать именно то, что вы хотите (проверено на Word 2010):
def find_lyrics(): print ‘Please minimize all other open windows, then enter the song:’ song = raw_input() start(«Google Chrome») # Disable Google’s autocompletion and set the language to English: google_address = ‘google.com/webhp?complete=0Address») press(ENTER) write(song + ‘ lyrics filetype:txt’) click(«I’m Feeling Lucky») press(CTRL + ‘a’, CTRL + ‘c’) press(ALT + F4) start(«Microsoft Word») press(CTRL + ‘v’) press(CTRL + ‘s’) click(«Desktop») write(song + ‘ lyrics’, into=»File name») click(«Save») press(ALT + F4) print(«nThe lyrics have been saved in file ‘%s lyrics’ » «on your desktop.» % song)
чтобы попробовать его для себя, загрузите Automa.zip от его страница скачать и распаковать, например, c:Program Files . Вы получите папку под названием Automa 1.1.2 . Запустить Automa.exe в этой папке. Скопируйте код выше и вставьте его в Аутома щелкнув правой кнопкой мыши в окне консоли. Нажмите Enter дважды, чтобы избавиться от последнего . в окне и вернуться в в строке >>> . Закройте все остальные открытые окна и введите
>>> find_lyrics()
это выполняет необходимые шаги.
Automa является библиотекой Python: чтобы использовать его как таковой, вы должны добавить строку
from automa.api import *
в верхней части скриптов и файла library.zip из каталога установки Automa в переменную среды PYTHONPATH .
если у вас есть какие-либо другие вопросы, просто дайте мне знать 🙂
Источник: askdev.ru
Python как управлять программами
А вот JSON-представление:
Упрощенно, шаблон использования конфигурационных файлов как текстового интерфейса к Python-приложению выглядит так: управляющие параметры выносятся в конфигурационный файл, а базовая логика описывается в Python-модуле.
Этот шаблон распространяется на приложения произвольной сложности, но у него есть естественные ограничения.
Если конфигурационный файл разрастается до размеров исключающих быстрый поиск нужных управляющих параметров или затрудняет реализацию сложной логики управления, то стоит задуматься о более эффективных приемах организации работы.
В этом вопросе могут помочь:
- DearPyGui : библиотека для разработки настольных приложений с графическим интерфейсом пользователя;
- Streamlit : мощная библиотека для прототипирования браузерных решений с графическим интерфейсом.
Важно понимать, что рассмотренный шаблон не может покрыть всех задач по-настоящему сложных приложений (например, с микросервисной архитектурой), но потенциально способен «закрыть» какое-то подмножество этих задач в пределах отдельно взятого микросервиса.
Пример связки «конфигурационный YAML-файл + Python-приложение»
В качестве примера возьмем задачу обнаружения выбросов в дискретной реализации стационарного гауссовского случайного процесса с различными типами корреляционных функций и ограничимся рассмотрением следующих их типов: экспоненциального, экспоненциально-косинусного, экспоненциально-косинусно-синусного (с плюсом) и экспоненциально-косинусно-синусного (с минусом).
Для простоты гипотеза о выбросах проверяется с помощью классической стандартизованной Z-оценки и модифицированной робастной Z-оценки (англ.) на медиане. Для моделирования псевдослучайных процессов с гауссовским распределением ординат и корреляционными функциями заданного типа использовались алгоритмы, заимствованные из книги Быкова, В.В. «Цифровое моделирование в статистической радиотехнике» .
Полный код примера с пояснениями и деталями реализации доступен в github-репозитории .
Вот его структура:
Заключение
Из руководства вы узнали:
- какие из существующих форматов конфигурационных файлов могут пригодится в роли текстового интерфейса к Python-приложениям;
- какие существуют библиотеки для работы с конфигурационными файлами и где проходит граница области применимости каждой из них;
- как использовать выразительный синтаксис YAML-файлов – якоря, псевдонимы, ключи слияния – для упрощения описания модели объектов;
- в каких сценариях имеет смысл использовать связку «конфигурационный файл + Python-приложение» и в чем сильная сторона такого подхода;
- как может выглядеть пример использования текстовых интерфейсов в задаче обнаружения выбросов;
- а также, как «винтажные» инструменты – Vim и sed – могут повысить эффективность редактирования текстовых файлов.
- From Novice to Expert: How to Write a Configuration file in Python
- YAML Syntax with Ansible
- Наглядно о том, как Vim рвёт в щепки Sublime, Atom, PyCharm
- Кобзарь, А.И. Прикладная математическая статистика, 2012
- Templating YAML in Kubernetes with real code
- Github-репозиторий с кодом рассмотренного примера о выбросах случайного гауссовского процесса
Связные материалы с платформы Proglib:
- Все, что нужно знать о декораторах
- Преобразования Фурье для обработки сигналов с помощью Python
Источник: proglib.io
Современные среды Python — управление зависимостями и рабочим пространством
После того, как вы пройдете через муки настройки среды Python для одного приложения типа «hello world», вам придется пройти через еще более сложный процесс выяснения, как управлять несколькими средами для нескольких проектов Python. Некоторые из этих проектов могут быть новыми, в то время как другие представляют собой груды кода десятилетней давности. К счастью, существует ряд инструментов, помогающих упростить управление зависимостями и рабочими пространствами.
В этой статье мы рассмотрим доступные инструменты для управления зависимостями и рабочим пространством, чтобы решить следующие проблемы:
- Установка и переключение между разными версиями Python на одном компьютере
- Управление зависимостями и виртуальными средами
- Воспроизведение сред
- Modern Python Environments — dependency and workspace management (this article!)
- Testing in Python
- Modern Test-Driven Development in Python
- Python Code Quality
- Python Type Checking
- Documenting Python Code and Projects
- Python Project Workflow
Установка Python
Хотя вы можете загрузить и установить Python из официальных двоичных файлов или с помощью менеджера пакетов вашей системы, вам следует воздержаться от этих подходов, если только вам не посчастливилось использовать одну и ту же версию Python для всех ваших текущих и будущих проектов. Поскольку это, скорее всего, не так, мы рекомендуем устанавливать Python с помощью pyenv.
pyenv — это инструмент, который упрощает установку и переключение между различными версиями Python на одной машине. Он сохраняет системную версию Python, которая необходима для нормальной работы некоторых операционных систем, и в то же время позволяет легко переключать версии Python в зависимости от требований конкретного проекта.
К сожалению, pyenv не работает под Windows вне Windows Subsystem for Linux. Проверьте pyenv-win, если это ваш случай.
После установки вы можете легко установить определенную версию Python следующим образом:
$ pyenv install 3.8.5 $ pyenv install 3.8.6 $ pyenv install 3.9.0 $ pyenv versions * system 3.8.5 3.8.6 3.9.0
Затем вы можете установить глобальную версию Python следующим образом:
$ pyenv global 3.8.6 $ pyenv versions system 3.8.5 * 3.8.6 (set by /Users/michael/.pyenv/version) 3.9.0 $ python -V Python 3.8.6
Помните, что это не изменяет и не влияет на Python на системном уровне.
Аналогичным образом вы можете установить интерпретатор Python для текущей папки:
$ pyenv local 3.9.0 $ pyenv versions system 3.8.5 3.8.6 * 3.9.0 (set by /Users/michael/repos/testdriven/python-environments/.python-version) $ python -V Python 3.9.0
Теперь каждый раз, когда вы запускаете Python внутри этой папки, будет использоваться версия 3.9.0.
Управление зависимостями
В этом разделе мы рассмотрим несколько инструментов для управления зависимостями, а также виртуальными средами.
venv + pip
venv и pip (package installer for python), которые поставляются с большинством версий Python, являются наиболее популярными инструментами для управления виртуальными средами и пакетами, соответственно. Они довольно просты в использовании.
Виртуальные среды предотвращают конфликты версий зависимостей. Вы можете установить разные версии одной и той же зависимости в разных виртуальных средах.
Вы можете создать новую виртуальную среду под названием my_venv внутри текущей папки следующим образом:
$ python -m venv my_venv
После создания среды ее необходимо активировать, выполнив скрипт activate внутри виртуальной среды:
$ source my_venv/bin/activate (my_venv)$
Для деактивации выполните команду deactivate . Затем, для повторной активации, выполните source my_venv/bin/activate в корневом каталоге проекта.
Запуск which python при активированной виртуальной среде вернет путь к интерпретатору Python внутри виртуальной среды:
(my_venv)$ which python /Users/michael/repos/testdriven/python-environments/my_venv/bin/python
Вы можете установить пакеты, локальные для вашего проекта, запустив pip install с активированной виртуальной средой:
(my_venv)$ python -m pip install requests
pip загружает пакет из PyPI (Python Package Index) и затем делает его доступным для интерпретатора Python внутри виртуальной среды.
Для воспроизводимости среды обычно требуется хранить список необходимых пакетов для проекта в файле requirements.txt. Вы можете вручную создать этот файл и добавить их или использовать команду pip freeze для его генерации:
(my_venv)$ python -m pip freeze > requirements.txt (my_venv)$ cat requirements.txt certifi==2020.6.20 chardet==3.0.4 idna==2.10 requests==2.24.0 urllib3==1.25.11
Хотите взять только зависимости верхнего уровня (например, requests==2.24.0 )? Посмотрите pip-chill.
Хотя venv и pip просты в использовании, они очень примитивны по сравнению с более современными инструментами, такими как Poetry и Pipenv. venv и pip ничего не знают о версии Python, с которой они работают. Вам придется управлять всеми зависимостями и виртуальными окружениями вручную. Вам придется самостоятельно создавать и управлять файлом requirements.txt. Более того, вам придется вручную разделять зависимости разработки (pytest, black, isort, . ) и производства (Flask, Django, FastAPI, . ), используя файл requirements-dev.txt.
# prod -r requirements.txt # dev black==20.8b1 coverage==5.0.3 flake8==3.7.9 ipython==7.12.0 isort==4.3.21 pytest-django==3.8.0 pytest-cov==2.8.1 pytest-xdist==1.31.0 pytest-mock==3.1.1
Django==3.0.8 django-allauth==0.41.0 django-crispy-forms==1.8.1 django-rq==2.2.0 django-rq-email-backend==0.1.3 gunicorn==20.0.4 psycopg2-binary==2.8.4 redis==3.4.1 requests==2.22.0 rq==1.2.2 whitenoise==5.0.1
Poetry и Pipenv объединяют функциональность venv и pip. Они также позволяют легко разделять зависимости для разработки и производства, а также обеспечивают детерминированные сборки с помощью файла блокировки. Они хорошо работают с pyenv.
Файлы блокировки фиксируют (или блокируют) все версии зависимостей по всему дереву зависимостей.
Poetry
Poetry — это, пожалуй, самый функциональный инструмент управления зависимостями для Python. Он поставляется с мощным CLI, используемым для создания и управления проектами Python. После установки для создания нового проекта выполните:
$ poetry new sample-project $ cd sample-project
В результате будут созданы следующие файлы и папки:
sample-project ├── README.rst ├── pyproject.toml ├── sample_project │ └── __init__.py └── tests ├── __init__.py └── test_sample_project.py
Управление зависимостями осуществляется внутри файла pyproject.toml:
[tool.poetry] name = «sample-project» version = «0.1.0» description = «» authors = [«John Doe «] [tool.poetry.dependencies] python = «^3.8» [tool.poetry.dev-dependencies] pytest = «^5.2» [build-system] requires = [«poetry>=0.12»] build-backend = «poetry.masonry.api»
Подробнее о pyproject.toml, новом файле конфигурации пакетов Python, который рассматривает «каждый проект как пакет», читайте в заметке Что это за хрень — pyproject.toml?.
Чтобы добавить новую зависимость, просто выполните:
$ poetry add [—dev]
Флаг —dev указывает, что зависимость предназначена только для использования в режиме разработки. Зависимости для разработки не устанавливаются по умолчанию.
$ poetry add flask
Это загружает и устанавливает Flask из PyPI в виртуальную среду, управляемую Poetry, добавляет ее вместе со всеми подзависимостями в файл poetry.lock и автоматически добавляет ее (зависимость верхнего уровня) в pyproject.toml:
[tool.poetry.dependencies] python = «^3.8» flask = «^1.1.2»
Обратите внимание на ограничение версии : «^1.1.2» .
Чтобы выполнить команду внутри виртуальной среды, добавьте к ней префикс poetry run. Например, для запуска тестов с помощью команды pytest :
$ poetry run python -m pytest
poetry run будет выполнять команды внутри виртуальной среды. Однако это не активирует виртуальную среду. Чтобы активировать виртуальную среду Poetry, нужно выполнить команду poetry shell . Чтобы деактивировать ее, достаточно выполнить команду exit . Следовательно, вы можете активировать виртуальную среду перед началом работы над проектом и деактивировать ее по окончании, или вы можете использовать poetry run на протяжении всей разработки.
Наконец, Poetry хорошо работает с pyenv. Просмотрите Managing environments из официальной документации, чтобы узнать больше об этом.
Pipenv
Pipenv пытается решить те же проблемы, что и Poetry:
- Managing dependencies and virtual environments
- Reproducing environments
После установки, чтобы создать новый проект с помощью Pipenv, выполните:
$ mkdir sample-project $ cd sample-project $ pipenv —python 3.8
Это создаст новую виртуальную среду и добавит Pipfile к проекту:
[[source]] name = «pypi» url = «https://pypi.org/simple» verify_ssl = true [dev-packages] [packages] [requires] python_version = «3.8»
A Pipfile работает так же, как файл pyproject.toml в стране Поэзии.
Вы можете установить новую зависимость следующим образом:
$ pipenv install [—dev]
Флаг —dev указывает, что зависимость предназначена только для использования в режиме разработки. Зависимости для разработки не устанавливаются по умолчанию.
$ pipenv install flask
Как и в случае с Poetry, Pipenv загружает и устанавливает Flask внутри виртуальной среды, фиксирует все подзависимости в файле Pipfile.lock и добавляет зависимость верхнего уровня в Pipfile.
Чтобы запустить сценарий внутри виртуальной среды, управляемой Pipenv, необходимо запустить его с помощью команды pipenv run. Например, чтобы запустить тесты с помощью команды pytest , выполните:
$ pipenv run python -m pytest
Как и Poetry, pipenv run будет выполнять команды изнутри виртуальной среды. Чтобы активировать виртуальную среду Pipenv, нужно выполнить pipenv shell . Чтобы деактивировать его, можно выполнить exit .
Pipenv также хорошо работает с pyenv. Например, когда вы хотите создать виртуальную среду из версии Python, которая у вас не установлена, он спросит, хотите ли вы сначала установить ее с помощью pyenv:
$ pipenv —python 3.7.5 Warning: Python 3.7.5 was not found on your system… Would you like us to install CPython 3.7.5 with Pyenv? [Y/n]: Y
Рекомендации
Какой мне использовать?
Рекомендуется начать с venv и pip. С ними проще всего работать. Ознакомьтесь с ними и выясните самостоятельно, в чем они хороши, а где их не хватает.
Поэзия или пипенв?
Поскольку они оба решают одни и те же проблемы, все сводится к личным предпочтениям.
- Публикация в PyPI намного проще с Poetry, поэтому, если вы создаете пакет Python, используйте Poetry.
- Оба проекта довольно медленны, когда дело доходит до разрешения зависимостей, поэтому, если вы используете Docker, вы можете держаться подальше от них обоих.
- С точки зрения разработки с открытым исходным кодом Poetry работает быстрее и, возможно, лучше реагирует на отзывы пользователей.
Дополнительные инструменты
В дополнение к вышеперечисленным инструментам посмотрите на следующие, которые помогут установить и переключиться между различными версиями Python на одной машине, управлять зависимостями и виртуальными средами, а также воспроизводить среды:
- Docker — это платформа для создания, развертывания и управления контейнерными приложениями. Он идеально подходит для создания воспроизводимых сред. Conda, довольно популярная в сообществе специалистов по данным и машинному обучению, может помочь в управлении зависимостями и виртуальными средами, а также в воспроизведении сред. Когда вам нужно просто упростить переключение между виртуальными средами и управлять ими в одном месте, стоит обратить внимание на virtualenvwrapper и pyenv-virtualenv , плагин pyenv. pip-tools упрощает управление зависимостями и воспроизводимость среды. Это часто сочетается с venv.
Управление проектом
Давайте рассмотрим, как управлять проектом Flask с помощью pyenv и Poetry.
Сначала создайте новый каталог под названием «flask_example» и переместитесь в него:
$ mkdir flask_example $ cd flask_example
Во-вторых, установите версию Python для проекта с помощью pyenv:
$ pyenv local 3.8.6
Далее, инициализируйте новый проект Python с помощью Poetry:
$ poetry init Package name [flask_example]: Version [0.1.0]: Description []: Author [Your name , n to skip]: License []: Compatible Python versions [^3.7]: >3.7 Would you like to define your main dependencies interactively? (yes/no) [yes] no Would you like to define your development dependencies interactively? (yes/no) [yes] no Do you confirm generation? (yes/no) [yes]
$ poetry add flask
Последнее, но не менее важное, добавить pytest в качестве зависимости для разработки:
$ poetry add —dev pytest
Добавьте файл с именем test_app.py:
После этого добавьте базовое приложение Flask в новый файл с именем app.py:
Теперь, чтобы запустить тесты, выполните:
$ poetry run python -m pytest
И вы можете запустить сервер разработки следующим образом:
$ poetry run python -m flask run
Команда poetry run запускает команду внутри виртуальной среды Poetry.
Заключение
В этой статье были рассмотрены наиболее популярные инструменты для решения следующих проблем, связанных с управлением зависимостями и рабочим пространством:
- Installing and switching between different versions of Python on the same machine
- Managing dependencies and virtual environments
- Reproducing environments
Меньшее значение имеет то, какие именно инструменты вы используете в своем рабочем процессе, и большее — то, что вы способны решить эти проблемы. Выбирайте те инструменты, которые облегчают вам разработку на Python. Экспериментируйте.
Они существуют для того, чтобы облегчить ваш ежедневный рабочий процесс разработки, чтобы вы могли стать настолько продуктивными, насколько это возможно. Попробуйте все из них и используйте те, которые подходят для вашего стиля разработки. Никаких суждений.
- Modern Python Environments — dependency and workspace management (this article!)
- Testing in Python
- Modern Test-Driven Development in Python
- Python Code Quality
- Python Type Checking
- Documenting Python Code and Projects
- Python Project Workflow
Источник: django.fun