Установка pip для python и базовые команды

Установка дополнительных модулей Python

Многие проекты Python созданы для использования преимуществ других модулей — общего программного обеспечения, которое другие проекты могут использовать для экономии времени, а не для «изобретения колеса». Вы можете найти и установить дополнительные модули с помощью PIP, индекса пакетов Python.

Прежде чем начать, вам нужно будет установить Python PIP , хотя, если вы установили Python 3.4 или новее, он должен быть предустановлен, если вы не удалили этот параметр во время предустановочной конфигурации Python.

Вы можете использовать PIP для установки новых модулей, открыв окно PowerShell и введя pip install package-name или python -m pip install package-name , заменив package-name именем пакета модуля, который вы можете установить. Вы можете искать пакеты для установки с помощью инструмента поиска на веб-сайте PIP.

Давайте начнем!

  1. Нажмите Пуск Windows, найдите планировщик задач и откройте его.,


Планировщик заданий Windows

2.Нажмите Create Basic Task в правом окне.,

Вы должны указывать имя задачи (например, веб-очистка) и описание (например, веб-очистка и дамп SQLite автоматически каждый день в 18:00)

3.Выберите время срабатывания,

У вас будет возможность выбрать временной триггер ежедневно, еженедельно и даже ежемесячно. Логически этот выбор во многом зависит от того, как часто вы хотите обновить значения из вашего источника данных. Например, если ваша задача — очистить баланс MarketWatch Stocks, вы должны запускать сценарии каждый финансовый квартал.

4.Выберите точное время для нашего предыдущего выбора,

Мы выберем месяц январь, апрель, июль и сентябрь, чтобы указать весь ранний финансовый квартал.

5 Запустить программу

Здесь вы сможете запускать скрипты Python, отправлять электронную почту и даже отображать сообщение. Не стесняйтесь выбирать те, которые вам наиболее удобны. Однако вам следует остерегаться устаревших задач, которые будут удалены в последующих исправлениях.

6.Вставьте скрипт вашей программы, где вы сохранили свой bat файл

Это запустит планировщик задач для вашего скрипта Python для автоматизации. Убедитесь, что вы также включили Пуск в папку вашего приложения, чтобы получить доступ ко всем соответствующим элементам (исполняемые файлы Selenium Browser / диск SQLite)

7.Нажмите Готово,

Вы можете проверить созданное расписание задач на первой странице Планировщика задач.

Результат

Вот анимация GIF для ваших ссылок

Обратите внимание, как планировщик сам запускает скрипты Python. Как только сценарии завершатся, он извлечет извлеченное значение из базы данных SQLite

В будущем это приложение будет запускаться каждый раз, когда выполняется условие триггера, и добавлять обновленные значения в SQLite.


Запуск веб-скриптинга с помощью планировщика задач и добавление его на диск SQLite
Данные добавляются в SQLite с помощью планировщика задач

Многопоточность

Представим такую ситуацию: 

  • У вас на руке смарт-часы, которые собирают данные о вашем пульсе, УФ-излучении и движениях. На смарт-часах работает программа, которая обрабатывает эти данные.
  • Программа состоит из четырёх функций. Первая собирает данные с датчиков. Три другие обрабатывают эти данные и делают выводы. 
  • Пока первая функция не собрала нужные данные, ничего другого не происходит.
  • Как только данные введены, запускаются три оставшиеся функции. Они не зависят друг от друга и каждая считает своё.
  • Как только все три функции закончат работу, программа выдаёт нужный результат.

А теперь давайте посмотрим, как это выглядит в однопоточной и многопоточной системе. Видно, что если процессор позволяет делать несколько дел одновременно, в многопоточном режиме программа будет работать быстрее:

Установка Visual Studio Code

При использовании VS Code в качестве текстового редактора или интегрированной среды разработки (IDE) вам доступны IntelliSense (помощь в завершении кода), анализ кода (помогает избежать ошибок в коде), поддержка отладки (помогает находить ошибки в коде после запуска), фрагменты кода (шаблоны для небольших повторно используемых блоков кода) и модульное тестирование (тестирование интерфейса кода с различными типами входных данных).

VS Code также содержит встроенный терминал, который позволяет открывать командную строку Python с помощью командной строки Windows, PowerShell или любой другой, создавая простой рабочий процесс между редактором кода и командной строкой.

  1. Чтобы установить VS Code, скачайте VS Code для Windows: https://code.visualstudio.com.

  2. Установив VS Code, необходимо также установить расширение Python. Для установки расширения Python можно выбрать ссылку на VS Code в Marketplace или открыть VS Code и выполнить поиск по фразе Python в меню расширений (Ctrl+Shift+X).

  3. Python — интерпретируемый язык, и для выполнения кода Python необходимо указать VS Code, какой интерпретатор нужно использовать. Мы рекомендуем использовать самую последнюю версию Python, если у вас нет особой причины для обратного. После установки расширения Python выберите интерпретатор Python 3, открыв палитру команд (CTRL+SHIFT+P), и начните вводить команду Python: Select Interpreter (Python: выбор интерпретатора) для поиска, а затем выберите появившуюся команду. Вы также можете использовать параметр Select Python Environment (Выбрать среду Python) в нижней строке состояния, если она доступна (возможно, уже отображается выбранный интерпретатор). Команда предоставляет список доступных интерпретаторов, которые VS Code может найти автоматически, включая виртуальные среды. Если нужный интерпретатор не отображается, перейдите к статье о настройке сред Python.

  4. Чтобы открыть терминал в VS Code, выберите Просмотр > Терминал или используйте клавиши CTRL+` (символ обратного апострофа). Терминалом по умолчанию является PowerShell.

  5. В окне терминала VS Code откройте Python, просто введя команду:

  6. Попробуйте использовать интерпретатор Python, введя: . Python вернет фразу «Hello World».

Почему моя программа не работает?

Ошибки при создании кода будут, особенно в начале изучения Python. Главное, научиться верно их истолковывать. Такой подход поможет быстрее избавляться от них, вплоть до приобретения навыка писать код без «косяков». Чтобы понять причину ошибки, достаточно на этапе проверки запустить программу через IDLE или консоль. Тогда пользователь увидит сообщения, которые укажут, где искать ошибку.

Вам будет интересно: Лучшие IDE и редакторы кода для Python

Чаще всего встречаются проблемы с запуском программ на Python 2. Как правило, причиной становятся забытые знаки препинания. Меньше ошибок возникает при использовании готовых библиотек, уже отлаженных разработчиками и проверенными другими кодерами.

Использование timeout для раннего выхода из программ

имеет аргумент , позволяющий остановить внешнюю программу, если ее выполнение занимает слишком много времени:

Если запустить этот код, результат будет выглядеть следующим образом:

Субпроцесс, который мы попытались запустить, использовал для сна в течение секунд. Однако мы передали аргумент с ключевым словом в , чтобы закрыть наш субпроцесс по таймауту по прошествии секунды. Это объясняет, почему при вызове в конечном итоге было выдано исключение .

Обратите внимание, что аргумент ключевого слова для является приблизительным. Python постарается остановить субпроцесс после заданного в аргументе количества секунд, но это не обязательно будет точным

❖ Способ 4: Использование виртуальных сред

Другой подход к запуску различных версий Python в Windows – это установить Виртуальский и создать две независимые виртуальные среды для соответствующих версий Python.

➥ Синтаксис:

virtualenv -p C: \ \ python.exe \

➥ Пример:

C:\Users\DELL\Desktop>virtualenv -p C:\Python27\python.exe c:\venvs\2.7

C:\Users\DELL\Desktop>virtualenv -p C:\Users\DELL\AppData\Local\Programs\Python\Python38\python.exe c:\venvs\3.8

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

Деактивировать это использовать команду:

Подключаем Python к JS

Теперь подключим нашу логику на Python к самому JS. Для этого примера я использую простую страничку, сверстанную чисто при помощи HTML, CSS (или вы можете использовать популярные фреймворки, которые нужны вам для работы с графикой). Первым делом необходимо подключить библиотеку eel к самому JS:

Далее реализуем функционал кнопки “рассчитать”. По нажатию кнопки первым делом необходимо считать значение рублей и пойти по каждой валюте, чтобы перевести значение.

Обратите внимание на строку “let value_cur = await eel.convert_value_py(value_rub, «RUB», name_cur)();”

Важно, что вызов функции из питона происходит в асинхронном режиме, поэтому обязательно необходимо сделать асинхронной ту функцию, в которой есть вызов Python кода. При вызове функции из eel необходимо ставить пару (), где в первые круглые скобки будут передаваться наши аргументы

При вызове функции из eel необходимо ставить пару (), где в первые круглые скобки будут передаваться наши аргументы.

Проверим, работает ли.

Как мы видим, все работает.

Обработка ошибок

Добавим заведомо неверное условие в команду. Например, пусть
листинг выполняется не для текущей директории а для несуществующей.

2
ls: cannot access ‘not_exist’: No such file or directory

Обратите внимане, что Python в этом примере не выдаёт никаких ошибок

Чтобы Python информировал об ошибках во внешних командах используйте опцию
check=True

python3 subprocess_lesson.py

Traceback (most recent call last):
File «subprocess_lesson.py», line 3, in <module>
p1 = subprocess.run(, capture_output=True, text=True, check=True)
File «/usr/lib/python3.8/subprocess.py», line 512, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command » returned non-zero exit status 2.

Обратите внимане, что теперь Python выдаёт ошибку, а до print(p1.returncode) и
print(p1.stderr) дело уже не доходит

python3 subprocess_lesson.py

None

Где используется Python

Python широко распространен во многих сферах: от системного администрирования до Data Science.

Системное администрирование

Системным администраторам Python нужен для автоматизации задач. Он простой, мощный и поддерживает специальные пакеты, которые повышают его эффективность. И, самое главное, он по умолчанию установлен на все серверы с ОС Linux.

Благодаря лаконичности Python можно быстро прочитать код и найти слабые места. Форматирование в языке — часть синтаксиса.

Научные исследования

В Python есть несколько библиотек, которые пригодятся для проведения исследований и вычислений:

  • SciPy — библиотека с научными инструментами;
  • NumPy — расширение, которое добавляет поддержку матриц и многомерных массивов, а также математические функции для работы с ними;
  • Matplotlib — библиотека для работы с 2D- и 3D-графикой.

Благодаря библиотекам и простоте освоения языка многие учёные выбирают Python — особенно он популярен у математиков и физиков.

Data Science

Python — один из самых используемых в Data Science языков. На нём пишут алгоритмы программ с машинным обучением и аналитические приложения. С помощью него обслуживают хранилища данных и облачные сервисы.

Как запустить приложение Python в пакетном режиме?

Бывает, у пользователя уже есть Python-файлы с расширением .py. Их тоже можно запустить через командную строку. Для этого вызывается интерпретатор Python, а в качестве аргумента передаётся соответствующий файл.

Давайте продемонстрируем это на практике. Откройте блокнот и поместите туда уже знакомые строки кода:

print("Привет, OTUS!")

Сохраните файл под именем example.py. Пусть он будет сохранен на диске C (можно выбрать и другую директорию на усмотрение пользователя).

Теперь откройте командную строку, перейдите в соответствующую директорию и можете запускать файл:

Красная стрелка — переход в нужную директорию, синяя — команда для запуска «Питона» в пакетном режиме, зелёная — итоговый результат. Всё просто.

Первые шаги

Самый первый шаг, как вы уже догадались, – это купить Пи. Я рекомендую получить его с SD-картой, на которой предварительно установлен Raspbian .

Кроме того, будьте осторожны, так как стандартный пакет не содержит адаптер питания . Вы можете использовать его с более мощным зарядным устройством телефона, если у вас есть какие-то дополнительные прокладки. Для самой первой настройки вам также понадобится дисплей , клавиатура и мышь .

Как только вы запустили Pi в первый раз, подключитесь к нему по локальной сети. Это может быть как кабель, так и через Wi-Fi. Затем запустите и настройте RealVNC (поставляется с Raspbian), так как это действительно удобный способ доступа к вашему Pi, даже удаленно. Настройка очень проста, просто зарегистрируйте учетную запись и следуйте инструкциям мастера. Как только это будет сделано, используйте VNC Viewer на любом устройстве для входа в систему. ( Windows , Mac OS , iOS , Android )

После того как это будет сделано, вам больше не нужно будет подключать к Пи какие-либо периферийные устройства. Raspbian обнаружит, если вы запустите его без какого-либо дисплея, клавиатуры или мыши, и он автоматически загрузится в так называемый режим заголовка . В режиме заголовка вы можете подключиться к Pi через SSH или через RealVNC с любого устройства: телефона, планшета, ноутбука. И не только из локальной сети, но и удаленно.

Пишем скрипт для рисования

В данном примере мы напишем скрипт, который будет рисовать дерево. Для работы с графикой в открытом доступе существует специальная Python-библиотека simple_draw. Чтобы установить ее, необходимо открыть командную строку (cmd) и прописать в ней команду pip install simple_draw.

Для начала давайте представим, из чего состоит структура дерева. Это ствол и ветки. В нашей программе дерево будет строиться из векторов — направленных отрезков. Попробуем нарисовать вектор. Перейдем в редактор, создадим новый файл draw.py и пропишем следующий код:

Для начала мы указываем, что хотим импортировать в нашу программу библиотеку simple_draw. Затем задаем разрешение окна для отрисовки —1200 на600 пикселей.

Далее создаем переменную point (точка) и с помощью метода (функции) get_point задаем начальную точку, из который будет выходить вектор, —600 пикселей от левого края экрана и 5 пикселей от низа экрана.

Чтобы создать объект Vector, нужно задать ему такие параметры, как точка начала вектора — point, угол отклонения — angle (90 градусов), длина — length (100 пикселей) и толщина линии — width (3 пикселя). Как видно из кода, все эти переменные можно записать в одну строчку.

Переменная vector_1 будет содержать в себе объект — вектор, а чтобы отрисовать его в окне, применим к нему метод draw (рисовать). Сохраним и запустим скрипт.

Представим, что мы отрисовали ствол дерева. Теперь попробуем создать еще несколько векторов, чтобы нарисовать ветви. У дерева может быть огромное количество веток, поэтому придется создавать и большое количество векторов. Такой код будет слишком громоздким и длинным. Чтобы этого избежать, автоматизируем процесс рисования векторов и создадим функцию branch, принимающую на вход параметры point, angle, length и width, которая и будет рисовать ветви.

Данная функция создает вектор с теми параметрами, которые ей передаются в скобках, отрисовывает его, а затем возвращает конечную точку отрисованного вектора (vector.end_point), угол отклонения, который на30 градусов меньше предыдущего (angle –30), длину вектора, немного меньшую исходной (length*0.8) и ширину (width). Попробуем с ее помощью создать несколько новых ветвей.

Мы нарисовали4 вектора. Каждый последующий вектор исходит от конца предыдущего и отличается длиной и углом отклонения, тем самым формируя изгиб ветви дерева. Но если мы снова представим реальное дерево, то чтобы отрисовать его, потребуется еще множество векторов. Задача программиста — написать как можно более компактный, универсальный и красивый код.

Поэтому сейчас пора освоить такую важную вещь, как рекурсия. Рекурсия — это когда функция внутри своего тела вызывает саму себя. Сократим немного код и перепишем функцию.

Чтобы функция до бесконечности не вызывала саму себя, нужно установить ей условие, при котором она будет останавливать выполнение. То есть мы указываем, что когда длина вектора при очередном вызове окажется меньше10 пикселей, то функция завершит свое выполнение и дальше ветви рисовать не будет.

Теперь сделаем так, чтобы с конца каждой ветви дерева исходили вправо и влево другие ветви, меньшего размера. Для этого в тело функции нужно добавить еще один вызов самой себя, в котором параметр angle будет увеличиваться на30 градусов. Таким образом ветви будут отрисовываться и вправо (angle –30), и влево (angle +30).

Добавим немного красоты нашему дереву и сделаем так, чтобы цвет каждой ветви генерировался случайным образом. Для этого внутри функции vector.draw() в скобках укажем параметр simple_draw.random_color() — это функция, которая возвращает случайный цвет.

Таким образом, конечный код выглядит следующим образом:

Запустим на выполнение и получим красивое, разноцветное дерево.

Как видите, небольшая функция за нас сделала всю работу. Изменив ее параметры и немного «поиграв» с кодом, можно добиться различных форм и видов деревьев.

5 ответов

Лучший ответ

Как видите, у меня установлены как Python2, так и Python3.

Я надеюсь, вы знаете, что путь к исполняемому файлу python должен быть добавлен в переменную окружения PATH в Windows. Как вы можете видеть, путь Python2 находится выше пути Python3 в моей системе.

Как команды запускают команды? Он ищет исполняемый файл с тем же именем в каталоге, в котором был открыт cmd, затем выполняет поиск команды в местах, указанных в переменной PATH Windows, от TOP до BOTTOM. Это означает, что он получает путь к Python2, прежде чем он сможет добраться до пути Python3. Поэтому каждый раз, когда вы вводите в свой cmd, он запускает Python2. Исполняемые файлы Python2 и Python3 имеют одинаковое имя в Windows, поэтому он никогда не запускает python3.

Что кажется очевидным решением? Вы можете подумать, что изменение имени на для исполняемого файла Python3 решит вашу проблему. Вы частично правы, это сработает. Но вы должны использовать или , что, я думаю, понятно. Но pip больше не будет работать, если вы измените имя исходного исполняемого файла python. Вы больше не сможете устанавливать внешние пакеты и модули.

Как решить эту проблему? Вы можете создать псевдоним для исполняемого файла Python3 с именем . Файлы и можно вызывать из cmd напрямую, без использования их расширения. Мы всегда пишем вместо , хотя оба они верны. То же самое можно сделать с файлами

Вернитесь к первому изображению и обратите внимание на файл ниже. Это мой способ вызова python3 без переименования моего исходного исполняемого файла python

python3.bat Создайте новый файл с помощью блокнота или чего-то еще и вставьте этот Я не совсем понимаю, как это работает, за исключением того, что в основном запускает python из той же директории и передает все аргументы в исполняемый файл python. Поместите этот файл в каталог установки Python3, и, надеюсь, ваша проблема будет решена.

В основном python3 запускает ваш файл , который, в свою очередь, запускает из своей папки и передает ему аргументы.

Надеюсь, это решит вашу проблему.

5

Diptangsu Goswami
15 Май 2018 в 12:11

  • Если Anaconda 3 — единственный интерпретатор python3 в системе, вы можете запустить вместо в командной строке, и он должен работать.

  • Вы можете изменить параметр , инвертируя позиции обоих интерпретаторов.

Shubham
15 Май 2018 в 11:37

Вы должны иметь также на вашем пути. Вы можете использовать для запуска вашего скрипта:

Но чтобы ответить на ваш вопрос, вы можете использовать и обновить его как .

2

akshat
15 Май 2018 в 11:28

Для запуска вашего скрипта с Python 3 вы можете использовать

П.С .: Это должен быть комментарий, но у меня нет необходимой репутации. 🙂

Silviu
15 Май 2018 в 11:26

Если вы хотите запустить Python 3.6, выполните . В противном случае проверьте с , где находится символическая ссылка на фактический исполняемый файл python. В моей системе это

И когда я , это дает

Если вы действительно уверены, что хотите это сделать, теперь вы можете просто переместить старую символическую ссылку куда-нибудь:

И создайте новую символическую ссылку:

Теперь вы должны получить что-то вроде:

Я не гарантирую, что это не сломает все в мире, особенно если у вас есть какой-то дистрибутив, у которого есть менеджер пакетов, который полагается на определенную версию Python в .

Похоже, это хорошо работает на Linux Mint 18.

Andrey Tyukin
17 Май 2018 в 15:22

Python: Data Science

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

Если вы планируете карьеру в этом направлении, то в дополнение к основным вебинарам прочитайте статьи:

  1. Карта развития дата-сайентиста: с чего начать и куда идти.
  2. Как изучить Data Science по-настоящему (а не развлекаться трюками).
  3. Семь базовых понятий из статистики для Data Science.

А также статью про математику для джунов.


Изображение: Public Domain

Первые модели

Одна из сильных сторон Python — это то, что настоящую модель машинного обучения можно закодить буквально в пару десятков строк, а то и меньше. И, разумеется, чтобы написать эти строки, глубокое знание Python не требуется. У дата-сайентистов его и нет.

  • Галопом по питону: языковой минимум для начинающего дата-сайентиста.
  • Первичное преобразование данных: использование библиотеки Pandas.
  • Ваша первая модель машинного обучения.

Делаем умного чат-бота

Николай Герасименко, ведущий исследователь данных в «Сбере», научит вас делать умных чат-ботов.

  • В первый день познакомимся с архитектурой будущего чат-бота, узнаем, что такое NLU, а также, как обычно, освежим в памяти основы Python.
  • Во второй день научим чат-бота понимать текст. Для этого подготовим данные, превратим слова в числа, обучим модель и встроим её в чат-бота.
  • На третий день создадим Telegram-бота и запустим наконец-то наше приложение. Восстание машин уже близко!

Интенсив «Чат-бот с искусственным интеллектом на Python»: первый день, второй день, третий день.

Пишем зрячую нейросеть

Уже знакомый нам Никита Левашов покажет, как сделать приложение с нейронкой внутри.

  • Первый день: основы Python для работы с нейросетью, работа в Google Colab, что такое компьютерное зрение.
  • Второй день: обучение модели распознаванию объектов.
  • Третий день: написание приложения, подключение его к стриму.

Запись вывода Python в файлы

В Python есть требования для записи вывода скрипта Python в файл.

Метод check_call() подпроцесса модуля используется для выполнения сценария Python и записи вывода этого сценария в файл.

Следующий пример содержит два сценария Python. Сценарий file1.py выполняет сценарий file.py и записывает свои выходные данные в текстовый файл output.txt.

Пример:

file.py

temperatures=  
def c_to_f(c):  
    if c< -273.15:  
        return "That temperature doesn't make sense!"  
    else:  
        f=c*9/5+32  
        return f  
for t in temperatures:  
    print(c_to_f(t))  

file.py

import subprocess  
  
with open("output.txt", "wb") as f:  
    subprocess.check_call(, stdout=f)  

Вывод

Использование частей кода, написанных на C# в Python возможно, но при таком подходе есть и свои минусы, например, скорость доступа к объектам. Использование pythonnet целесообразно, если имеются какие-то части кода, которые нет возможности переписать на Python, но они требуют подключения к основному проекту на Python.

P.S. есть и другие способы ускорить python, например, написать библиотеку на C/C++ или переписать часть кода на Cython с меньшими проблемами. В данной статье лишь представлена возможность использования C# и Python вместе. Также существует реализация Python для платформы Microsoft.NET под названием IronPython.

Захват вывода внешней программы

Теперь мы можем вызывать внешнюю программу . Далее мы покажем, как захватывать вывод этой программы. Например, этот процесс может быть полезным, если бы мы хотели использовать для вывода всех файлов, хранящихся в системе контроля версий.

Примечание. Для примеров, показанных в этом разделе, требуется версия Python 3.7 или выше. В частности, в версию Python 3.7, выпущенную в июне 2018 г. были добавлены аргументы и ключевое слово .

Дополним наш предыдущий пример:

Если запустить этот код, результат будет выглядеть следующим образом:

Этот пример в целом аналогичен рассмотренному в первом разделе, и мы все еще запускаем субпроцесс для печати . Однако теперь мы передаем аргументы ключевых слов и в .

возвращает объект , который привязан к . Объект содержит детали о коде выхода внешней программы и ее выводе. Благодаря в и вносится соответствующий вывод внешней программы. По умолчанию и привязаны как байты, но аргумент ключевого слова предписывает Python декодировать байты в строки.

В разделе вывода — это (плюс новая строка в конце, где добавляет явность), и у нас нет .

Рассмотрим пример, где значение не пустое:

Если запустить этот код, вывод будет выглядеть следующим образом:

Этот код запускает субпроцесс Python, который немедленно выдает ошибку . При просмотре окончательного мы не видим ничего в и видим результат ошибки в . Это связано с тем, что по умолчанию Python записывает необработанного исключения в .

Заключение

Мы дойдем до конца этого урока, и я надеюсь, что это помогло вам. Пожалуйста, Подписаться и Оставайтесь настроиться Для более интересных статей.

  • Вы хотите быстро освоить самые популярные Python IDE?
  • Этот курс приведет вас от новичка к эксперту в Пычарме в ~ 90 минут.
  • Для любого разработчика программного обеспечения имеет решающее значение для освоения IDE хорошо, писать, тестировать и отлаживать высококачественный код с небольшим усилием.

Присоединяйтесь к Pycharm MasterClass Сейчас и мастер Pycharm на завтра!

Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.

Вы можете связаться со мной @:

  • Заработка
  • Linkedin.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector