Введение
Виртуальные среды — не самая простая концепция для новичков в Python. Как правило, при установке ПО, например Microsoft Office и Evernote, большинство из нас придерживаются стандартной конфигурации, предполагающей применение ПО всеми пользователями ПК. Иначе говоря, на системном уровне устанавливается всего одна копия программы, доступ к которой получают все пользователи.
У многих из нас эта привычка формировалась годами смомента обучения программированию. Сначала мы учились устанавливать на ПК сам Python, а затем напрямую в систему — его пакеты. Чем больше мы с ним работали, тем большее число различных пакетов требовалось для решения широкого спектра задач, но по ходу стали возникать определенные сложности.
Пакет А зависит от пакета В с версией 2.0, поэтому вместе с первым из них на системном уровне устанавливается и второй. Однако другому проекту требуется пакет С, зависящий от пакета В с версией 2.5. При установке С в соответствии с его требованиями система обновит В до версии 2.5. Но вот обновление пакета А для взаимодействия с пакетом В 2.5 не произошло, что чревато проблемами на этапе работы с A.
С такого рода сложностями рано или поздно сталкиваются многие начинающие программисты Python. Помимо конфликтов зависимостей есть еще проекты, требующие разных его версий. Например, возможна ситуация, в которой ранее разработанные проекты продолжают использовать Python 2.x, а большинство других — 3.x. При этом некоторые из тех, что придерживаются версии 3.x., могут работать с Python 3.4, а другие требуют 3.5+. Следовательно, если для всех проектов на системном уровне установлен только Python, то конфликты его версий могут стать камнем преткновения.
В такой ситуации на помощь приходят среды Conda . Conda — это комплексный инструмент управления пакетами и средой, востребованный специалистами по данным. Кроме того, он оптимизирует библиотеки, связанные с наукой о данных, такие как NumPy, SciPy и TensorFlow, которые максимально увеличивают производительность имеющегося оборудования для обеспечения наилучшей вычислительной мощности (более подробная информация предоставлена на сайте Conda). Этот инструмент позволяет создавать изолированные среды для проектов, которые могут включать не только разные пакеты, но даже разные версии Python.
С подробной инструкций установки Conda на ПК можно ознакомиться на официальном сайте. Различают две версии данного инструмента: более компактный Miniconda, предоставляющий Conda и его зависимости, и Anaconda, включающий гораздо большее число пакетов, необходимых в научных исследованиях. После установки Conda вы можете выполнить следующую команду в терминале (или в другом инструменте командной строки на свое усмотрение):
conda --version
В результате вы увидите версию Conda, установленную на вашем ПК. А это значит, что у нас все готово для работы. Далее мы рассмотрим важнейшие команды для управления средами в большинстве случаев.
Приложения не запускаются, и их имена недоступны
на компьютере, на котором работает Windows 10 или более поздней версии, нельзя запускать некоторые приложения, и имена приложений отображаются серым цветом.
При попытке открыть приложение, выбрав затененное имя, может появиться одно из следующих сообщений об ошибке:
кроме того, следующие записи событий регистрируются в журнале «Microsoft-Windows-твинуи/эксплуатация» в разделе applications and сервицес\микрософт\ Windows \аппс:
Причина
Эта проблема возникает из-за изменения записи реестра для значения состояния соответствующего пакета приложения.
Решение
Предупреждение
При неправильном изменении реестра с помощью редактора реестра или иного метода могут возникнуть серьезные проблемы. Эти проблемы могут потребовать переустановки операционной системы. Корпорация Майкрософт не гарантирует, что такие неполадки могут быть устранены. Ответственность за изменение реестра лежит на пользователе.
Чтобы устранить эту проблему:
- Откройте редактор реестра и найдите подраздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModel\StateChange\PackageList .
- Чтобы создать резервную копию данных подраздела, щелкните правой кнопкой мыши паккажелист, выберите пункт Экспорт, а затем сохраните данные в виде файла реестра.
- Для каждого из приложений, перечисленных в записях журнала Event ID 5960, выполните следующие действия.
- Откройте запись паккажестатус .
- Установите значение паккажестатус равным нулю ().
Примечание
Если в паккажелист нет записей для приложения, значит, у проблемы есть другая причина. В случае с примером события в этой статье полный подраздел — HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModel\StateChange\PackageList\Microsoft.BingNews_8wekyb3d8bbwe!AppexNews\PackageStatus
- Перезагрузите компьютер.
Glueviz
Glue — это библиотека Python для изучения отношений между и внутри связанных наборов данных. Его основные функции включают в себя:
Ссылка статистическая графика. Используя Glue, пользователи могут создавать точечные диаграммы, гистограммы и изображения данных (2D и 3D). Glue фокусируется на чистке зубов и связывании примеров, где выделение на любом графике распространяется на все остальные графические объекты.
Гибкая связь между данными. Glue использует логические связи, которые существуют между различными наборами данных, чтобы покрыть визуализацию разных данных и распространять выборки по наборам данных. Эти ссылки указаны пользователем и являются произвольно гибкими.
Полная функция скрипта. Клей написан на Python и построен на его стандартных научных библиотеках (например, Numpy, Matplotlib, Scipy). Пользователи могут легко интегрировать свой собственный код Python для ввода данных, очистки и анализа.
Воссоздание сред
Воспроизводимость — вот главная цель, к достижению которой стремятся Conda и другие инструменты управления средой, чтобы обеспечить качественное выполнение кода не только на личном ПК, но и на машинах коллег по команде
Вот почему так важно иметь возможность воссоздавать ту же самую среду на другом компьютере. Рассмотрим несколько полезных команд, применяемых для этой цели
Как только вы вошли в виртуальную среду, выполните:
conda env export > environment.yml
Указанная команда создает в текущей директории файл требований, содержащий всю информацию по рабочей среде: имя, зависимости и установочные каналы. Вы можете открыть этот текстовой файл и поизучать его.
Этим файлом вы делитесь со всеми, кто хочет воссоздать такую же среду. Для его использования достаточно выполнить нижеследующую команду. При необходимости для обеспечения работоспособности данный файл можно подредактировать, например изменить имя среды.
conda env create -f environment.yml
Флаг говорит о намерении создать среду из конкретного файла. Перейдите в директорию, содержащую , и выполните команду .
Обновление Scikit-Learn Library
На этом этапе мы обновим основную библиотеку, используемую для машинного обучения в Python, под названием scikit-learn.
1. Обновите scikit-learn до последней версии.
На момент написания статьи версия Scikit-Learn, поставляемая с Anaconda, устарела (0.17.1 вместо 0.18.1). Вы можете обновить определенную библиотеку, используя команду conda; ниже приведен пример обновления scikit-learn до последней версии.
На терминале введите:
Кроме того, вы можете обновить библиотеку до определенной версии, набрав:
Убедитесь, что установка прошла успешно, и scikit-learn был обновлен путем повторного запускаверсии руСценарий, набрав:
Вы должны увидеть результат, подобный следующему:
Вы можете использовать эти команды для обновления машинного обучения и библиотек SciPy по мере необходимости.
Попробуйте учебник scikit-learn, например:
Ваш первый проект машинного обучения в Python, шаг за шагом
Создание новой среды
Для создания новой среды существует следующая команда:
conda create --name firstenv
- Флаг говорит о намерении указать имя новой среды. В данном случае она будет называться .
- Вместо возможен краткий вариант .
Эту команду можно расширить, чтобы установить дополнительные пакеты в процессе создания среды, к примеру и :
conda create -name firstenv numpy requests
Более того, у нас даже есть возможность указать конкретные версии этих пакетов, как показано ниже:
conda create -n firstenv numpy=1.19.2 requests=2.23.0
После установки можно удостовериться в успешном создании среды с помощью команды , отображающей в списке.
Если вы в курсе, какие пакеты необходимы для среды, то в процессе ее создания можно установить сразу их все. Это позволит избежать конфликтов зависимостей, к которым могут привести отдельные установки.
Orange3
Интерактивная визуализация данных
Выполните простой анализ данных с помощью умной визуализации данных. Изучите статистические распределения, коробчатые и точечные диаграммы или получите представление о деревьях решений, иерархической кластеризации, тепловых картах, MDS и линейной проекции. Даже ваши многомерные данные могут стать разумными в 2D, особенно с точки зрения интеллектуального ранжирования и выбора атрибутов.
Учителя и студенты любят это
При обучении интеллектуальному анализу данных нам нравится объяснять, а не просто объяснять. И апельсин это здорово. Orange используется в школах, университетах и на курсах профессиональной подготовки по всему миру для поддержки практического обучения и наглядных иллюстраций концепций науки о данных. Есть даже виджеты, специально предназначенные для обучения.
Расширения дополнений
Используйте различные дополнительные компоненты, доступные в Orange, чтобы извлекать данные из внешних источников данных, выполнять обработку естественного языка и анализ текста, выполнять анализ сети, выводить частые наборы элементов и выполнять анализ правил ассоциации. Кроме того, ученые в области биоинформатики и молекулярные биологи могут использовать Orange для ранжирования генов для дифференциального анализа и анализа обогащения.
4.2 Другие IDE используют anaconda
Поскольку установка anaconda идет с интегрированной средой разработки Spyder, она не требует прямой настройки для какой-либо конфигурации, но другие IDE, которые вы устанавливаете самостоятельно, должны быть настроены для использования anaconda.
На самом деле, если anaconda установлен до Pycharm, тогда будет возможность, когда вы столкнетесь с выбором переводчика, и мы напрямую выберем OK. Если он установлен после Pycharm, нам нужно только вручную установить интерпретатор, используемый Pycharm.
5. Установочный пакет
Чтобы просмотреть установленные пакеты, мы можем ввести pip list в командной строке или использовать conda (список conda), который поставляется с собственным менеджером пакетов anaconda.
Запустите и обновите Anaconda
На этом этапе мы подтвердим, что ваша среда Anaconda Python обновлена.
Anaconda поставляется с набором графических инструментов под названием Anaconda Navigator. Вы можете запустить Anaconda Navigator, открыв его из панели запуска приложений.
Вы можете узнать все оАнаконда Навигатор здесь,
Позже вы сможете использовать Anaconda Navigator и графические среды разработки; на данный момент я рекомендую начать со среды командной строки Anaconda, которая называетсяКонда,
Conda — это быстро, просто, трудно скрыть сообщения об ошибках, и вы можете быстро убедиться, что ваша среда установлена и работает правильно.
- 1. Откройте терминал (окно командной строки).
- 2. Убедитесь, что conda установлена правильно, набрав:
Вы должны увидеть следующее (или что-то подобное):
3. Убедитесь, что Python установлен правильно, введя:
Вы должны увидеть следующее (или что-то подобное):
Если команды не работают или имеют ошибку, пожалуйста, проверьте документацию для справки для вашей платформы.
См. Некоторые ресурсы в разделе «Дальнейшее чтение».
4. Убедитесь, что ваша среда conda обновлена, введите:
Возможно, вам придется установить некоторые пакеты и подтвердить обновления.
5. Подтвердите свою среду SciPy.
В приведенном ниже сценарии будет напечатан номер версии ключевых библиотек SciPy, необходимых для разработки машинного обучения, а именно: SciPy, NumPy, Matplotlib, Pandas, Statsmodels и Scikit-learn.
Вы можете ввести «python» и ввести команды напрямую. В качестве альтернативы я рекомендую открыть текстовый редактор и скопировать скрипт в свой редактор.
Сохраните скрипт как файл с именем:versions.py,
В командной строке перейдите в каталог, в котором вы сохранили скрипт, и введите:
Вы должны увидеть результат, подобный следующему:
Anaconda Prompt
Откройте Anaconda Prompt, это окно совпадает с окном doc, вы можете управлять и настраивать python, вводя команды, чаще всего используется команда conda, использование этого пункта такое же, это программное обеспечение интегрировано, вы можете использовать его напрямую, нажмите, чтобы открыть, как показано ниже , Используйте команду «список conda» для просмотра установленных пакетов, из этих библиотек мы можем найти NumPy, SciPy, Matplotlib, Pandas, указывающие, что установка прошла успешно!
Вы также можете использовать команду conda для установки и обновления некоторых пакетов.
список conda: список всех установленных пакетов
имя установки conda: где имя — это имя пакета, который необходимо установить, например, я устанавливаю пакет numpy, а приведенная выше команда называется «conda install numpy». Между словами есть пробел, затем нажмите Enter и введите y.
После установки anaconda это эквивалентно установке Python, IPython, интегрированной среды разработки Spyder, некоторых пакетов и т. Д. Вы можете просмотреть его под cmd под Windows:
Spyder
Кроссплатформенная, интегрированная среда разработки научных вычислений с использованием языка Python.
Нажмите Anaconda Navigator, он будет инициализирован в первый раз, он будет инициализирован, терпеливо подождет некоторое время, загрузка завершена, и интерфейс будет таким, как показано на рисунке.
Редактор Spyder, мы можем использовать этот редактор для написания кода в будущем, его самое большое преимущество заключается в имитации «рабочего пространства» MATLAB. Spyder.exe находится в папке «Сценарии» в каталоге установки, например у меня есть C: \ ProgramData \ Anaconda2 \ Scripts \ spyder.exe, его можно запустить, дважды щелкнув напрямую. Мы можем щелкнуть правой кнопкой мыши, чтобы отправить на рабочий стол ярлык, в будущем будет удобнее запускать.
Мы просто пишем программу для проверки успешности установки, программа используется для открытия изображения и отображения. Сначала подготовьте картинку, затем откройте spyder и напишите следующий код:
Измените C: /Users/Administrator/Desktop/379283176280170726.jpg на местоположение, в котором вы хотите отобразить изображение, а затем щелкните зеленый треугольник на панели инструментов выше для запуска. Окончательное отображение выглядит следующим образом:
Конфликты зависимостей
Но возможно, что есть конфликты зависимостей (которые препятствуют дальнейшему обновлению). Conda обычно очень четко предупреждает, если они происходят.
например, X требует Y <5.0, поэтому Y никогда не будет> = 5.0
Вот почему вы «не можете» обновить их все.
Разрешение
Чтобы добавить: возможно, это сработает, но более новая версия X, работающая с Y> 5.0, недоступна в conda. Возможна установка с помощью pip, поскольку в pip доступно больше пакетов. Но имейте в виду, что pip также устанавливает пакеты, если существуют конфликты зависимостей, и что он обычно нарушает вашу среду conda в том смысле, что вы больше не можете надежно установить с помощью conda. Если вы это сделаете, сделайте это в крайнем случае и после того, как все пакеты будут установлены с помощью conda. Это скорее взлом.
Безопасный способ, который вы можете попробовать, — это добавить conda-forge в качестве канала при обновлении (добавить как флаг) или любой другой канал, который вы найдете, содержащий ваш пакет, если вам действительно нужна эта новая версия . Таким образом, conda также выполняет поиск доступных пакетов в этих местах.
Учитывая ваше обновление : вы можете обновить их каждый по отдельности, но это будет включать не только обновление, но и понижение версии другого пакета. Скажем, чтобы добавить к приведенному выше примеру:
X> 2.0 требует Y <5.0, X <2.0 требует Y> 5.0
Таким образом, обновление Y> 5.0 подразумевает понижение версии X до <2.0 и наоборот.
( это, конечно, педагогический пример, но на самом деле это то же самое, обычно только с более сложными зависимостями и подзависимостями )
Таким образом, вы по-прежнему не можете обновить их все , выполняя обновления по отдельности; зависимости просто неудовлетворительны, поэтому раньше или позже обновление приведет к понижению версии уже обновленного пакета. Или нарушить совместимость пакетов (чего вы обычно не хотите!), Что возможно только путем явного вызова ignore-dependencies и force -command. Но это только взломать ваш путь вокруг вопросов, безусловно , не тот случай нормального пользователя!
1 Если вы действительно хотите обновить пакеты вашей установки, чего вы обычно не делаете . Команда, запущенная в базовой среде, обновит пакеты в этом, но обычно вы должны работать с виртуальными средами ( а затем ). Выполнение в такой среде обновит пакеты внутри этой среды. Однако, поскольку базовая среда также является средой, ответ одинаково применим к обоим случаям.
Установите библиотеки глубокого обучения
На этом этапе мы установим библиотеки Python, используемые для глубокого изучения, а именно: Theano, TensorFlow и Keras.
НОТА: Я рекомендую использовать Keras для глубокого изучения, а для Keras требуется только установить один из Theano или TensorFlow. Вам не нужны оба! Могут быть проблемы с установкой TensorFlow на некоторых компьютерах с Windows.
1. Установите библиотеку глубокого обучения Theano, набрав:
2. Установите библиотеку глубокого обучения TensorFlow (все, кроме Windows), набрав:
Кроме того, вы можете выбрать установку с использованием pip и конкретной версии tenorflow для вашей платформы.
Увидеть,
3. Установите Keras, набрав:
4. Убедитесь, что ваша среда глубокого обучения установлена и работает правильно.
Создайте сценарий, который печатает номера версий каждой библиотеки, как мы делали это ранее для среды SciPy.
Сохраните скрипт в файлdeep_versions.py, Запустите скрипт, набрав:
Вы должны увидеть результат как:
Попробуйте учебное пособие по глубокому обучению Keras, например:
Создайте свою первую нейронную сеть на Python с помощью Keras шаг за шагом
activate
Активация может привести нас в виртуальную среду, установленную Anaconda. Если вы не добавите никаких параметров, вы войдете в базовую среду, которая поставляется с Anaconda,
Вы можете ввести python, чтобы попробовать, это введет интерпретатор python базовой среды,Если вы удалите среду Python из исходной среды, вы будете более осведомленыВ настоящее время в качестве командной строки используется не ваш исходный питон, а питон в базовой среде, и перед командной строкой будет еще одна (базовая), что указывает на то, что мы в настоящее время находимся в базовой среде.
Создайте свою собственную виртуальную среду
Конечно, мы не удовлетворены базовой средой, мы должны установить отдельную виртуальную среду для нашей программы.
Создайте виртуальную среду с именем learn и укажите версию Python как 3 (здесь conda автоматически найдет последнюю версию 3 для загрузки)
conda create -n learn python=2
Итак, у нас есть обучаемая виртуальная среда, и затем мы переключаемся на эту среду, та же самая по-прежнему использует команду activae, за которой следует имя среды, которую нужно переключить
Conda vs. Pip vs. Venv — в чем разница?
- pip — это менеджер пакетов для Python.
- venv — является менеджером среды для Python.
- conda — является одновременно менеджером пакетов и среды и не зависит от языка.
создает изолированные среды только для разработки на Python, а может создавать изолированные среды для любого поддерживаемого языка программирования.
Примите во внимание, что pip устанавливает только пакеты Python из PyPI, с помощью conda можно
- Установить пакеты (написанные на любом языке) из репозиториев, таких как Anaconda Repository и Anaconda Cloud.
- Установить пакеты из PyPI, используя pip в активной среде Conda.
5.2 Установка файла
Если pip или conda не могут быть установлены, мы загрузим установочный файл, такой как exe-файл (установка двойным щелчком мыши) или whl-файл (установка pip) и так далее.
6. Командное окно с анакондой
Командные подсказки, которые мы упоминали выше, в основном являются операциями на системном диске. На самом деле, анаконда поставляется с командным окном. Нажмите, чтобы открыть напрямую
Все, что можно запустить в «Командной строке», можно запустить здесь, только путь к файлу изменился. Например, если мы введем ipython.exe notebook в эти два командных окна, файл .ipynb по умолчанию будет храниться в другом месте.
Запрос информации об установке
Запрос в настоящее время установленных библиотек
Установить библиотеку (*** представляет имя библиотеки)
Обновить библиотеку
Конфликты зависимостей
Но возможно, что есть конфликты зависимостей (которые препятствуют дальнейшему обновлению). Conda обычно очень четко предупреждает, если они происходят.
например, X требует Y <5.0, поэтому Y никогда не будет> = 5.0
Вот почему вы «не можете» обновить их все.
Разрешение
Чтобы добавить: возможно, это сработает, но более новая версия X, работающая с Y> 5.0, недоступна в conda. Возможна установка с помощью pip, поскольку в pip доступно больше пакетов. Но имейте в виду, что pip также устанавливает пакеты, если существуют конфликты зависимостей, и что он обычно нарушает вашу среду conda в том смысле, что вы больше не можете надежно установить с помощью conda. Если вы это сделаете, сделайте это в крайнем случае и после того, как все пакеты будут установлены с помощью conda. Это скорее взлом.
Безопасный способ, который вы можете попробовать, — это добавить conda-forge в качестве канала при обновлении (добавить как флаг) или любой другой канал, который вы найдете, содержащий ваш пакет, если вам действительно нужна эта новая версия . Таким образом, conda также выполняет поиск доступных пакетов в этих местах.
Учитывая ваше обновление : вы можете обновить их каждый по отдельности, но это будет включать не только обновление, но и понижение версии другого пакета. Скажем, чтобы добавить к приведенному выше примеру:
X> 2.0 требует Y <5.0, X <2.0 требует Y> 5.0
Таким образом, обновление Y> 5.0 подразумевает понижение версии X до <2.0 и наоборот.
( это, конечно, педагогический пример, но на самом деле это то же самое, обычно только с более сложными зависимостями и подзависимостями )
Таким образом, вы по-прежнему не можете обновить их все , выполняя обновления по отдельности; зависимости просто неудовлетворительны, поэтому раньше или позже обновление приведет к понижению версии уже обновленного пакета. Или нарушить совместимость пакетов (чего вы обычно не хотите!), Что возможно только путем явного вызова ignore-dependencies и force -command. Но это только взломать ваш путь вокруг вопросов, безусловно , не тот случай нормального пользователя!
1 Если вы действительно хотите обновить пакеты вашей установки, чего вы обычно не делаете . Команда, запущенная в базовой среде, обновит пакеты в этом, но обычно вы должны работать с виртуальными средами ( а затем ). Выполнение в такой среде обновит пакеты внутри этой среды. Однако, поскольку базовая среда также является средой, ответ одинаково применим к обоим случаям.
Переключить среду
activate learn
Если мы забываем имя, мы можем использовать его первым
conda env list
Чтобы увидеть всю окружающую среду
В текущей среде обучения нет других пакетов, кроме некоторых официальных пакетов, которые поставляются с python, мы можем попробовать относительно чистую среду
Сначала введите python, чтобы открыть интерпретатор python, а затем введите
>>> import requests
Он сообщит об ошибке и не сможет найти пакет запросов, что является нормальным. Далее мы покажем, как установить пакет запросов.
exit()
Выйти из интерпретатора Python
Установить сторонние пакеты
запись
conda install requests
или
pip install requests
Для установки пакета запросов.
После завершения установки мы введем python, чтобы войти в интерпретатор и импортировать пакет запроса, на этот раз он должен был быть успешным.
Итак, как удалить пакет
conda remove requests
или
pip uninstall requests
Вот и все
Чтобы просмотреть все установленные пакеты в текущей среде, вы можете использовать
conda list
Импорт и экспорт среды
Если вы хотите экспортировать информацию о пакете текущей среды, вы можете использовать
conda env export > environment.yaml
Сохраните информацию о пакете в файле yaml.
Вы можете использовать его, когда вам нужно воссоздать идентичную виртуальную среду
conda env create -f environment.yaml
На самом деле, команда очень простая, правильная или неправильная, ниже я приведу некоторые часто используемые, я думаю, что я могу вспомнить ее, сыграв еще дважды
Активировать // Переключиться на базовую среду
активировать обучение // Переключиться в среду обучения
conda create -n learn python = 3 // Создать среду с именем learn и указать версию python как 3 (последняя версия)
conda env list // Список всех сред, управляемых conda
conda list // Список всех пакетов в текущей среде
Конда установить запросы установить запросы пакета
conda удалить запросы удалить пакет запросов
conda remove -n learn —all // Удалить среду обучения и все подчиненные пакеты
пакет запросов на обновление conda
conda env export> environment.yaml // Экспорт информации о пакете текущей среды
conda env create -f environment.yaml // Создать новую виртуальную среду с помощью файла конфигурации
Заключение
В статье были рассмотрены 8 основных команд Conda (но фактически их было больше). Надеюсь, они помогут вам начать работу с этим инструментом для управления средами в проектах науки о данных. Подведем краткие итоги:
- Создавайте новую среду для каждого проекта. О пространстве на диске можете не беспокоиться, поскольку среда много места не занимает.
- Устанавливайте как можно больше пакетов при создании среды во избежание конфликтов зависимостей.
- Используйте альтернативные каналы, если Anaconda не предоставляет нужные пакеты. Однако он всегда должен рассматриваться как приоритетный.
- Рассмотрите вариант передачи среды для воспроизведения ее аналога с теми же пакетами.
- Анализ социальных сетей: от теории графов до приложений на Python
- Классы данных в Python и их ключевые особенности
- Создание собственной симуляции активной материи на Python
Читайте нас в Telegram, VK и