Src python что это
Начало работы с Python в Windows для создания сценариев и автоматизации
Ниже приведено пошаговое руководство по настройке среды разработки и началу работы с Python для создания сценариев и автоматизации операций файловой системы в Windows.
В этой статье рассматривается настройка среды для использования некоторых полезных библиотек в Python, которые могут автоматизировать задачи на разных платформах, таких как поиск в файловой системе, доступ к Интернету, анализ типов файлов и т. д. с помощью подхода, ориентированного на Windows. Для операций, относящихся к Windows, извлеките ctypes, совместимую с C библиотеку функций с кодом на другом языке программирования для Python, winreg, функции, предоставляющие API реестра Windows для Python, и Python/WinRT, включив доступ к API среды выполнения Windows в Python.
Настройка среды разработки
При использовании Python для написания скриптов, выполняющих операции файловой системы, рекомендуется установить Python из Microsoft Store. При установке из Microsoft Store используется базовый интерпретатор Python3, но в дополнение к автоматическому обновлению также настраиваются параметры пути для текущего пользователя (без необходимости доступа администратора).
если вы используете Python для разработки веб-приложений на Windows, рекомендуем использовать другую программу установки, используя подсистема Windows для Linux. Ознакомьтесь с пошаговыми инструкциями в нашем руководстве: Начало работы с Python для разработки веб-приложений в Windows. Если вы новичок в Python, ознакомьтесь с нашим руководством: Get started using Python on Windows for beginners (Приступая к работе с Python в Windows для начинающих). В некоторых сложных сценариях (например, при необходимости модификации или доступа к установленным файлам Python, создания копий двоичных файлов или непосредственного использования библиотек DLL Python) может потребоваться загрузить определенный выпуск Python непосредственно с сайта python.org или установить альтернативное средство, например Anaconda, Jython, PyPy, WinPython, IronPython и т. д. Мы рекомендуем это только в том случае, если вы более продвинутый программист на Python и у вас есть конкретная причина выбрать альтернативную реализацию.
Установка Python
Чтобы установить Python с помощью Microsoft Store, сделайте следующее:
Перейдите в меню Пуск (значок Windows в нижнем левом углу), введите «Microsoft Store» и щелкните ссылку, чтобы открыть магазин.
Когда магазин откроется, выберите Поиск в верхнем правом меню и введите «Python». Выберите, какую версию Python вы хотите использовать, из результатов в разделе «Приложения». Мы рекомендуем использовать самую последнюю версию, если только у вас нет причин для обратного (например, по причине согласования с версией, использованной в уже существующем проекте, над которым вы планируете работать). Определив, какую версию вы хотите установить, выберите Получить.
Установка Visual Studio Code
При использовании VS Code в качестве текстового редактора или интегрированной среды разработки (IDE) вам доступны IntelliSense (помощь в завершении кода), анализ кода (помогает избежать ошибок в коде), поддержка отладки (помогает находить ошибки в коде после запуска), фрагменты кода (шаблоны для небольших повторно используемых блоков кода) и модульное тестирование (тестирование интерфейса кода с различными типами входных данных).
Загрузите VS Code для Windows и следуйте инструкциям по установке: https://code.visualstudio.com.
Установка расширения Microsoft Python
Установите расширение Microsoft Python, чтобы воспользоваться преимуществами функций поддержки VS Code. Подробнее.
откройте окно расширения VS Code, нажав клавиши Ctrl + Shift + X (или с помощью меню перейдите к пункту просмотр расширений).
В поле «лучшие расширения поиска в Marketplace » введите: Python.
Найдите расширение Python (ms-python.python) от Microsoft и нажмите зеленую кнопку Установить.
Откройте встроенный терминал PowerShell в VS Code
VS Code содержит встроенный терминал, который позволяет открывать командную строку Python с помощью PowerShell, создавая простой рабочий процесс между редактором кода и командной строкой.
откройте терминал в VS Code, выберите просмотреть терминалили используйте сочетание клавиш Ctrl + ‘ (с помощью символа обратной кавычки).
По умолчанию этим терминалом должен быть PowerShell, но если его нужно изменить, используйте Ctrl+Shift+P, чтобы ввести команду. Введите терминал: Выберите Оболочку по умолчанию, и отобразится список параметров терминала, содержащий PowerShell, командную строку, WSL и т. д. Выберите ту, которую хотите использовать, и нажмите Ctrl+Shift+` (с помощью обратного апострофа), чтобы создать новый терминал.
В окне терминала VS Code откройте Python, введя: python
Установка Git (необязательно)
Если вы планируете совместно работать над кодом Python с другими пользователями или размещать проект на сайте с открытым исходным кодом (например, GitHub), примите во внимание, что VS Code поддерживает управление версиями с помощью Git. Вкладка системы управления версиями в VS Code отслеживает все изменения и содержит общие команды Git (добавление, фиксация, принудительная отправка, извлечение) прямо в пользовательском интерфейсе. Сначала необходимо установить Git для включения панели управления версиями.
Скачайте и установите Git для Windows с веб-сайта git-scm.
В комплект входит мастер установки, который задает вам ряд вопросов о параметрах установки Git. Рекомендуется использовать все параметры по умолчанию, если у вас нет конкретной причины изменить какой-либо из них.
Если вы никогда не использовали Git, обратитесь к руководствам по GitHub. Они помогут вам приступить к работе.
Пример сценария для вывода структуры каталога файловой системы
Распространенные задачи системного администрирования могут занимать огромное количество времени, но с помощью сценария Python вы можете их автоматизировать и не тратить на них время вовсе. Например, Python может читать содержимое файловой системы компьютера и выполнять такие операции, как вывод структуры файлов и каталогов, перемещение папок из одного каталога в другой или переименование большого количества файлов. Как правило, такие задачи могут занимать массу времени, если выполнять их вручную. Вместо этого используйте сценарий Python!
Начнем с простого сценария, в котором описано дерево каталогов и отображено структуру каталогов.
Откройте PowerShell, используя меню Пуск (нижний левый значок Windows).
Создайте несколько каталогов для использования с нашим примером сценария:
Создайте несколько файлов в этих каталогах для использования с нашим сценарием:
Создайте в каталоге Python-Scripts новый файл Python:
откройте VS Code окно проводника, нажмите клавиши Ctrl + Shift + E (или используйте меню для перехода к обозревателюпредставлений) и выберите только что созданный файл list-directory-contents.py. Расширение Microsoft Python будет автоматически загружать интерпретатор Python. Загруженный интерпретатор можно увидеть в нижней части окна VS Code.
Python — интерпретируемый язык, то есть он выступает в качестве виртуальной машины, имитируя физический компьютер. Существуют различные типы интерпретаторов Python, которые можно использовать: Python 2, Python 3, Anaconda, PyPy и т. д. Чтобы выполнить код Python и получить Python IntelliSense, необходимо указать интерпретатор, который следует использовать в VS Code. Если нет конкретной причины для выбора другого интерпретатора, мы рекомендуем придерживаться интерпретатора, который VS Code выбирает по умолчанию (Python 3 в нашем случае). Чтобы изменить интерпретатор Python, выберите интерпретатор, который сейчас отображается в синей панели в нижней части окна VS Code, или откройте палитру команд (Ctrl+Shift+P) и введите команду Python: Select Interpreter (Python: выбор интерпретатора). На экране появится список установленных интерпретаторов Python. Using Python environments in VS Code(Использование сред Python в VS Code).
Вставьте следующий код в файл list-directory-contents.py, а затем выберите Сохранить:
Откройте интегрированный терминал VS Code (Ctrl+` с помощью символа обратного апострофа) и введите каталог src, в котором вы только что сохранили сценарий Python:
Запустите сценарий в PowerShell с помощью:
Результат должен выглядеть примерно так:
Используйте Python, чтобы вывести выходные данные каталога файловой системы в собственный текстовый файл, введя следующую команду непосредственно в терминале PowerShell: python3 list-directory-contents.py > food-directory.txt
Поздравляем! Вы только что написали автоматизированный сценарий системного администрирования, который считывает созданные вами каталог и файлы и использует Python для отображения, а затем для вывода структуры каталога в собственный текстовый файл.
Если вы не можете установить Python 3 из Microsoft Store, прочтите об этой проблеме, чтобы ознакомиться с примером управления путями для этого примера скрипта.
Пример сценария для изменения всех файлов в каталоге
В этом примере используются только что созданные файлы и каталоги, каждый из которых следует переименовать путем добавления даты последнего изменения файла в начало имени файла.
В папке src в каталоге python-scripts создайте новый файл Python для своего сценария:
Откройте файл update-filenames.py, вставьте следующий код в файл и сохраните его:
os.getmtime возвращает метку времени в тактах, что трудно читать. Сначала его необходимо преобразовать в стандартную строку datetime.
Протестируйте сценарий update-filenames.py, запустив его: python3 update-filenames.py а затем снова запустите сценарий list-directory-contents.py: python3 list-directory-contents.py
Вы должны получить следующий результат:
Используйте Python для вывода новых имен каталогов файловой системы с меткой времени последнего изменения в начале текстового файла, введя эту команду непосредственно в терминале PowerShell: python3 list-directory-contents.py > food-directory-last-modified.txt
Надеемся, что вы узнали несколько интересных вещей об использовании сценариев Python для автоматизации основных задач системного администрирования. Конечно, есть еще масса информации, но мы надеемся, что это позволит вам начать работу с нужным нижним колонтитулом. Ниже мы предоставили несколько дополнительных ресурсов, чтобы вы продолжили обучение.
This is the second part of the article series for building python packages. In the previous article, we discussed how to version control your codebase and the concept of documentation. In this article, we are going to talk about how to convert that code into an actual package that works like a regular python library you work with.
There are many ways to convert your code into a package. Building the package and creating the package structure are completely different things. Because you have to use a packaging tool to convert your code into a package, but to that correctly happens the code base be in the right shape that compatible with the building tool.
First of all, Why there are several packaging architectures? isn’t there a universal one?. Actually, NO. the reason is that architecture depends on the extent of the artifact you are building and the usage of the package. So, there are a few general layout patterns :
This is the type of application that can download and install and then import the code as an external module or directly run in the terminal.
p.s. : Above names for layout/architectures are not standard, but those are commonly used terminologies. especially, setuptools library supports to create the above 3 structures easily.
src/ — This is the folder that contains your python package codes. The structure of this folder varies on the application layout you have chosen.
logs/ — log files are saved in this folder.
LICENSE — This file shows, what is the license of the package and facilities and restrictions the user has provided by the publisher. it’s a good practice to use a well-known license than a self-created license. like; GNU, Apache license, MIT license, creative commons license.
test/ — If you have written unit tests for your packages then those files go under this folder.
setup.py — This is the most crucial files in the folder directory. because this file says, all most all the details about the package to the package builder. there are several acceptable developer practices to create this file. also, some parts of the file change according to what is your application layout.
If the package is a complex one then you will create the following directories as well.
bin/ — Here go all the executable files you have used in the package implementation. if your package is a pure python one, there is nothing to put here. But if you have used some C or C++ codes then their executable files must save in here.
data/ — If you have been used some text file to save variables or parameters or data, then those files go under this folder
In python import, a code written in an external file causes to name that imported file as “module” in the current namespace. The word namespace is a bit special. namespace plays a major role in languages like python because they use lexical scoping as the scoping rule and functions are first-class objects. as a summary when you type from file_name import function that function clone into the current working variable space instead of processing on the original variable space.
More or less, here our concern is to create the python package as a module.
However, how the package behavior depends on the setup.py file configuration as well.
This is the simplest way to do that when you are using setuptools as the packaging module.
If you are familiar with OOP concepts, this is exactly the same as the packaging in the OOP, the only difference is that this package is portable.
If you are using IDE like pycharm, eclipse — pydev you can create a folder structure for a package with few clicks. however, it’s simple.
The main difference is that there is no src/ folder and there is a folder that has the name of your package and starts with __init__.py file always. So, why is that? actually, here you are creating a machine with an interface that can interact with the external world. Also, you can define what machine do, how they do those by writing files in the pkg_name/ directory other than __init__.py file. That file is to define the interface of the package, to say what function can access by an external file when using this package.
This is a bit complex example because there is a package inside the package. create the pkg interface with encapsulating the internal package is crucial because else this example goes under our next topic.
Not only that changes in src/ folder but also setup.py must change appropriately.
While building the wheel or the egg file setuptool identifies all the files in the package and imports them into the final build. If there are no internal packages just define the package name is enough. If there are internal packages and the main package uses some functions provided by those internal packages, defining those package directories is essential.
There are two main different ways of the folder structure to define, but setup.py file configuration is the same as the above.
What makes it different from the above example is that here you refer to internal packages interfaces [ __init__.py ]from the main library interface. So, then while run time user can access the internal function by using dot operation. however, defining test/ is more complicated than the above structures.
This is kind of provides many packages under one name. So, here user feels there are different packages but developer package testing is easier than the above method. However, the most formal way to build a python library is that one defined first.
Модули — Python: Основы
Программы на Python содержат тысячи, десятки тысяч и сотни тысяч строк кода (есть проекты с миллионами). В таких условиях одним файлом с кодом не обойдёшься — его нужно разбивать на части. Для получения доступа к коду, который находится в других файлах, в Python реализован механизм модулей.
Модули и импортирование
Строго говоря, в Python импортировать модули можно несколькими способами:
Импортирование модуля
Рассмотрим применение первого способа — импортирование модуля целиком. Главное удобство упоминания модуля по имени: глядя на код, мы сразу видим, что используемая переменная или вызываемая функция — это часть конкретного модуля.
Синтаксис импорта: import
В модуле (файле) с именем greeting.py определим функцию say_hi и переменную name :
А в модуле с именем main.py сделаем импорт содержимого модуля greeting.py:
Импортирование отдельных определений
Иногда из всего модуля нужна пара функций или переменных, а имя модуля слишком длинное, чтобы писать его каждый раз. Здесь нам может пригодиться следующий вариант использования инструкции import :
Здесь после ключевого слова from указано имя модуля, а затем после ключевого слова import — имена определений из этого модуля, которые мы в дальнейшем хотим использовать напрямую (а не «через точку»).
В следующем уроке мы рассмотрим третий вариант импортирования модуля («импорт всего содержимого») и в целом немного углубим наши познания в этой теме.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты.
Нашли опечатку или неточность?
Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.
Что-то не получается или материал кажется сложным?
Загляните в раздел «Обсуждение»:
Об обучении на Хекслете
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Виртуальные окружения в Python
Python знаменит своей обширной стандартной библиотекой и девизом «батарейки в комплекте» (batteries included). Даже из коробки Python позволяет удобно и быстро решить огромный пласт задач, например, например, работа с файлами, запуск простого веб-сервера, работа с электронной почтой, парсинг XML и JSON, и так далее. Во всяком случае, это намного удобнее, чем писать shell-скрипты 😅
Кроме того, у Python имеется огромная экосистема сторонних библиотек, поддерживаемых сообществом энтузиастов. Эти библиотеки реализуют отсутствующую в стандартной поставке функциональность, либо пере-реализуют уже имеющуюся, но удобнее. Если у вас возникла потребность в какой-то функциональности, то почти наверняка кто-то уже написал для этого библиотеку, и нужно просто погуглить.
Установка сторонней библиотеки
Каждый начинающий программист знает, как установить библиотеку. Набираем
и понеслась! Множество библиотек в своих инструкциях по установке именно так и предлагают их устанавливать. Это и правда работает, это и правда так просто, но есть нюансы. В этом месте закопаны очень популярные грабли, по которым прошлось множество начинающих питонистов, в том числе и я.
Как pip устанавливает пакеты
Давайте разберемся, что же происходит, когда юзер набирает в терминал такую команду. В общих чертах происходит следующее.
Давайте подробнее разберем третий шаг. Установка пакета — звучит загадочно и сложно, но на самом деле ничего сложного здесь не происходит. pip просто распаковывает zip-архив в определенное место (это справедливо для формата wheel, для установки пакетов в других форматах могут потребоваться дополнительные действия, но давайте разберем самый распространённый и простой случай). Куда именно происходит установка? Это можно узнать, выполнив следующую команду:
В списке sys.path можно увидеть директорию site-packages — именно туда и будет установлена библиотека. Давайте в этом убедимся.
До установки пакета:
После установки пакета:
Как видим, в директорию site-packages добавилась библиотека requests вместе со всеми своими зависимостями.
Важные мысли, которые я пытаюсь донести:
А это значит, что в один интерпретатор Python нельзя установить две версии одной библиотеки одновременно. При установке новой версии предыдущая «перезатирается». Просто как если бы вы распаковали другой архив с совпадающими именами файлов в то же самое место.
Боль — это жизненный опыт
Что же будет, если вам понадобится работать над двумя проектами, которые будут требовать разных, не совместимых между собой версий одной и той же библиотеки? Возможно, между этими версиями в библиотеку были внесены какие-то крупные ломающие изменения, например, переименовались методы/функции или изменился набор аргументов.
Вы просто не сможете работать над такими проектами одновременно. Установка зависимостей одного проекта сломает другой, и наоборот. При переключении между проектами придётся каждый раз устанавливать зависимости нужного проекта, что довольно легко забыть сделать.
Ситуация кажется маловероятной, но я гарантирую, что рано или поздно это случится, если устанавливать зависимости всех своих проектов в один интерпретатор. Всё усугубляется тем фактом, что прямые зависимости вашего проекта тянут за собой свои зависимости (под-зависимости), те, в свою очередь, тоже могут от чего-то зависеть (под-под-зависимости). В итоге вы получаете целое дерево зависимостей. И если где-то в этом дереве окажется библиотека не той версии, что ожидалось, то весь проект может начать очень странно работать. Вы получите такие эзотерические ошибки, которых еще никто в интернете до вас не встречал. Если всё сразу сломалось, то считайте, что легко отделались — по крайней мере, так довольно просто понять, в чём проблема. Но бывают и ситуации намного хуже, когда приложение просто начинает немножко иначе работать, без каких-либо ошибок, и возможно придется потратить долгие часы на траблшутинг, чтобы найти настоящую причину.
Надеюсь, я убедил вас, что устанавливать зависимости нескольких проектов в один интерпретатор — это очень-очень плохо. Но как же тогда правильно?
Виртуальные окружения
Как создавать виртуальные окружения
Начиная с Python версии 3.5 (на данный момент это самая старая из официально поддерживаемых версий языка, так что справедливо ожидать, что как минимум везде установлен Python 3.5 или новее), создать виртуальное окружение стало очень просто:
Например, допустим, что мы работаем над проектом blog_source :
В директорию env будет скопирован тот самый интерпретатор, при помощи которого виртуальное окружение и создавалось. Т.е. если
то в виртуальном окружении будет та же самая версия:
Активируем окружение
Посмотрим, что внутри директории env :
Обратите внимание, что в директории bin есть некий файл activate в нескольких вариантах для разных шеллов. Это и есть «точка входа» в виртуальное окружение. Просто создать виртуальное окружение мало, нужно его активировать. Но сначала проверим, какие python и pip (исполняемые файлы) используются в обычном режиме работы:
Это мой обычный Python, вне виртуального окружения, назовём его глобальным. Теперь активируем виртуальное окружение:
Для Windows процесс активации будет отличаться (допустим, что виртуальное окружение создано в C:\src\blog_source ):
Теперь проверим еще раз, какие python и pip используются:
Посмотрите на пути — мы внутри виртуального окружения! Теперь можно смело устанавливать любые пакеты, и это никак не повлияет на глобальный Python или на другие виртуальные окружения:
Можно запускать любые файлы, и они будут иметь доступ к установленным пакетам:
IDE тоже нужно настроить, указав путь к bin/python внутри виртуального окружения, тогда редактор сможет лучше вам помогать.
И мы видим, что команда python снова вызывает глобальный интерпретатор. При этом виртуальное окружение осталось в своей директории, оно просто не активно. В следующий раз, когда будет нужно поработать с виртуальным окружением, не забудьте снова его активировать.
Виртуальное окружение можно полностью удалить, когда оно перестанет быть нужным:
В идеале, у вас должна быть возможность в любой момент удалить и пересоздать виртуальное окружение заново, для этого храните список зависимостей проекта и содержите его в актуальном состоянии (например, в requirements.txt ). В процессе разработки могут случиться всякие казусы с зависимостями, и иногда проще пересоздать виртуальное окружение заново, чем пытаться починить сломанное.
Вот так можно работать с виртуальными окружениями в Python. Всегда устанавливайте зависимости проектов только в изолированные виртуальные окружения. Не смешивайте зависимости разных проектов в одном окружении.
Ничего не устанавливайте в глобальный интерпретатор
Установка начинается, прогресс-бары заполняются, но в итоге всё завершается чем-то типа такого:
Может нарушить целостность системы.
Подробнее про этот метод установки читайте здесь.
установить программу через пакетный менеджер ОС, например:
Выводы
Да, виртуальные окружения — определенно не самая удобная часть разработки на Python, и уж точно не самая простая тема, к этому просто нужно привыкнуть. Несколько раз повторил, выработал привычку — в целом, ничего сложного. Кроме того, экосистема Python развивается очень быстро, и я надеюсь, что скоро правильная установка пакетов и управление виртуальными окружениями станут намного легче. Уже сейчас можно пользоваться такими инструментами, которые в некоторой мере прячут от пользователя виртуальные окружения:
Стабильных вам зависимостей и кода без багов!