Как сделать программу на python

Добавил пользователь Morpheus
Обновлено: 04.10.2024

Из множества существующих языков программирования Python — один из самых лёгких в изучении. Он создан в конце 80-х годов XX века, но с тех пор он сильно изменился. Хотя Python входит в состав большинства дистрибутивов Linux, на него часто не обращают внимания при выборе языка для изучения. В этой статье мы рассмотрим создание консольных приложений, а в следующей — программирование графических интерфейсов (GUI ). Давайте создадим простую программу прямо сейчас.

Наша первая программа

Наберём код в текстовом редакторе (например, в gedit). Потом мы разберёмся, что делает каждая строка и пойдём дальше.

Введите эти 4 строки:

Это всё. Сохраните файл как hello.py в любом месте. Я предлагаю сохранить его в папке python_examples в домашнем каталоге. Этот пример показывает, как просто написать программу на Python. Для запуска программы нужно сделать её файл исполняемым. Для этого введите в терминале

в папке, в которой вы сохранили программу. Теперь запустите её.

Вот и всё. Теперь давайте рассмотрим что делает каждая строка программы.

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

Эта строка просто печатает в окне терминала Hello. I am a python program.

Теперь давайте быстро обсудим то, что мы сделали, и перейдём к работе над следующим примером. Откройте окно терминала и наберите:

Вы должны увидеть что-то наподобие этого:

и нажмите Enter. вы увидите:

Теперь поработаем с переменными ещё раз. Введите:

и нажмите Enter.

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

Введите в интерпретаторе:

Теперь у Вас есть основные знания о командах print и input, создании переменных и разнице между строками и числами.

Пойдём дальше. В интерпретаторе Python введите quit() для выхода в командную строку.

Пример цикла For

Теперь давайте рассмотрим пример программирования цикла. Запустите текстовый редактор и наберите следующую программу:

Теперь, как раньше, выполните команду

и запустите программу:

Если мы изменим нашу программу таким образом:

Мы увидим на экране следующее:

Убедитесь в том, что вы соблюдаете уровни вложенности. Запомните: от них зависит выделение блоков. В следующем уроке мы подробнее рассмотрим уровни вложенности.

На сегодня хватит. В следующем уроке мы продолжим изучать команды языка Python. А пока, вам стоит попробовать специализированные редакторы для Python, например, Dr. Python или SPE (Stani's Python Editor). Обе программы вы найдёте в Synaptic.

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

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

Что такое программирование на Python?

Перед началом познакомиться с самим языком.
Python — язык общего назначения. Имеет приложения разных направлений: веб-разработки (например, Django и Bottle ), научных и математических вычислений ( Orange, SymPy, NumPy ) для настольных графических пользовательских интерфейсов ( Pygame, Panda3D ).

Синтаксис языка простой, а длина кода относительно короткая. Работать на Python приятно, потому что он позволяет решать задачу, а не фокусироваться на сложном синтаксисе.

История Python

Python старый язык, созданный Гвидо Ван Россумом. Разработка началась в конце 1980-х., и в феврале 1991 года вышла первая версия.

Зачем создан Python?
В конце 1980-ых, Гвидо Ван Россум работал над группой операционных систем Amoeba. Он хотел использовать интерпретируемый язык, такой как ABC (у ABC простой и доступный в понимании синтаксис), который мог бы получить доступ к системным вызовам Amoeba. Поэтому он решил создать масштабируемый язык. Это привело к созданию нового языка, у которого позже появилось название Python.

Почему выбрали Python
Нет. Он не назван в честь опасной змеи. Россум был фанатом комедийного сериала в конце 70-х. Название “Python” было взято из этого же сериала “Monty Python’s Flying Circus” (Летающий цирк Монти Пайтона).

Дата выпуска версий языка

Изучаем Python

Python — потрясающий язык. Синтаксис настолько прост, и длина кода настолько коротка, что делает его понятным и легким в написании.

Если вы только начинаете программировать, Python— отличный выбор. Вы будете удивлены тому, сколько задач решает Python как только изучите его основы.

Легко упустить из виду факт, что Python — мощный язык. Хорош для обучения программированию. Воплотите свою идею, создайте игру или начните с Data Science, Python поможет во всем, чтобы вы не затеяли.

Любая программа на Python — это обычный текстовый файл. Для того, чтобы написать первую программу на Python, потребуется текстовый редактор.

После установки запустите Sublime и в открывшемся окне наберите текст самой простой программы на Python для начинающих

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

Сохраните получившейся текстовый файл под именем hello.py

В появившемся окне терминала нужно перейти в каталог, в котором находится сохраненный файл hello.py. Для перехода в нужный каталог используйте команду cd. Введите в строке приглашения терминала и нажмите Enter

Если вы работаете в windows и программа сохранена в корне какого‑либо диска, например диска D, наберите название диска, двоеточие и нажмите Enter

Для того, чтобы запустить программу, наберите в терминале текст

если у вас MacOS или

если у вас Windows. Нажмите Enter.

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

Поздравляем! Ваша первая программа написана!

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

Причиной написания статьи, явилось огромное количество постоянно возникающих у новичков вопросов такого содержания: "Как собрать проект c pyqt5", "Почему не работает", "Какой инструмент выбрать" и т.д. Сегодня научимся собирать проекты без мучений и танцев с бубном.

Как-то пришлось написать небольшое desktop-приложение. В качестве языка программирования для разработки был выбран python, поскольку для решения моей задачи он подходил идеально. В стандартную библиотеку Python уже входит библиотека tkinter, позволяющая создавать GUI. Но проблема tkinter в том, что данной библиотеке посвящено мало внимания, и найти в интернете курс, книгу или FAQ по ней довольно-таки сложно. Поэтому было решено использовать более мощную, современную и функциональную библиотеку Qt, которая имеет привязки к языку программирования python в виде библиотеки PyQT5. Более подробно про PyQT можете почитать здесь. В качестве примера я буду использовать код:

Если вы более-менее опытный разработчик, то понимаете, что без интерпретатора код на python не запустить. А хотелось бы дать возможность каждому пользователю использовать программу. Вот здесь к нам на помощь и приходят специальные библиотеки позволяющие собирать проекты в .exe, которые можно потом без проблем запустить, как обычное приложение.

Существует большое количество библиотек, позволяющих это сделать, среди которых самые популярные: cx_Freeze, py2exe, nuitka, PyInstaller и др. Про каждую написано довольно много. Но надо сказать, что многие из этих решений позволяют запускать код только на компьютере, с предустановленным интерпретатором и pyqt5. Не думаю, что пользователь будет заморачиваться и ставить себе дополнительные пакеты и программы. Надеюсь, вы понимаете, что запуск программы на dev-среде и у пользователя это не одно и тоже. Также нужно отметить, что у каждого решения были свои проблемы: один не запускался, другой собирал то, что не смог потом запустить, третий вообще отказывался что-либо делать.

После долгих танцев с бубном и активным гуглением, мне все же удалось собрать проект с помощью pyinstaller, в полностью работоспособное приложение.

Немного о Pyinstaller

Pyinstaller собирает python-приложение и все зависимости в один пакет. Пользователь может запускать приложение без установки интерпретатора python или каких-либо модулей. Pyinstaller поддерживает python 2.7 и python 3.3+ и такие библиотеки как: numpy, PyQt, Django, wxPython и другие.

Pyinstaller тестировался на Windows, Mac OS X и Linux. Как бы там ни было, это не кросс-платформенный компилятор: чтобы сделать приложение под Windows, делай это на Windows; Чтобы сделать приложение под Linux, делай это на Linux и т.д.

PyInstaller успешно используется с AIX, Solaris и FreeBSD, но тестирование не проводилось.

Подробнее о PyInstaller можно почитать здесь: документация.

К тому же после сборки приложение весило всего около 15 мб. Это к слову и является преимуществом pyinstaller, поскольку он не собирает все подряд, а только необходимое. Аналогичные же библиотеки выдавали результат за 200-300 мб.

Приступаем к сборке

Прежде чем приступить к сборке мы должны установить необходимые библиотеки, а именно pywin32 и собственно pyinstaller:

Чтобы убедится, что все нормально установилось, вводим команду:

должна высветиться версия pyinstaller. Если все правильно установилось, идем дальше.

В папке с проектом запускаем cmd и набираем:

Собственно это и есть простейшая команда, которая соберет наш проект.
Синтаксис команды pyinstaller таков:

pyinstaller [options] script [script . ] | specfile

Наиболее часто используемые опции:

--onefile — сборка в один файл, т.е. файлы .dll не пишутся.
--windowed -при запуске приложения, будет появляться консоль.
--noconsole — при запуске приложения, консоль появляться не будет.
--icon=app.ico — добавляем иконку в окно.
--paths — возможность вручную прописать путь к необходимым файлам, если pyinstaller
не может их найти(например: --paths D:\python35\Lib\site-packages\PyQt5\Qt\bin)

PyInstaller анализирует файл myscript.py и делает следующее:

  1. Пишет файл myscript.spec в той же папке, где находится скрипт.
  2. Создает папку build в той же папке, где находится скрипт.
  3. Записывает некоторые логи и рабочие файлы в папку build.
  4. Создает папку dist в той же папке, где находится скрипт.
  5. Пишет исполняемый файл в папку dist.

В итоге наша команда будет выглядеть так:

После работы программы вы найдете две папки: dist и build. Собственно в папке dist и находится наше приложение. Впоследствии папку build можно спокойно удалить, она не влияет на работоспособность приложения.

Python

Консольные приложения — это те, которые вы запускаете в терминале. Скорее всего, вы уже пытались их создать. Или, по крайней мере, думали об их создании.

Но создание консольного приложения — это одно, а публикация его в репозиторий с открытым кодом (например, PyPI) — совсем другое. Хотя ни первое, ни второе не является чем-то запредельно трудным.

В этой статье я подробно расскажу, как можно создать простой CLI на Python и опубликовать его в PyPI.

Начало

Не так давно я занялся изучением уязвимостей open-source кода и понял, что хочу иметь в арсенале инструмент командной строки, который мог бы находить уязвимости напрямую из терминала. Уязвимости open-source кода обычно публикуются в открытых базах данных. Их можно найти на таких сайтах, как CVE, NVD, WhiteSource Vuln и т.д.

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

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

Для создания виртуальной среды можно воспользоваться командой python -m venv

(для Python 3) либо установить virtualenvwrapper с помощью pip install virtualenvwrapper и создать виртуальную среду virtualenv через mkvirtualenv -p /path/topython

После того, как виртуальная среда настроена и активирована, вы можете создать папку проекта и установить необходимые модули:

Как только все успешно запустилось, откройте свой проект в любом редакторе кода. Вы увидите похожую структуру:


Создание веб-скрейпера

Для того, чтобы искать и просматривать уязвимости на сайте CVE, потребуется веб-скрейпер. Он поможет нам собирать информацию об уязвимостях. Мы создаем скрейпер в Requests и BeautifulSoup. Вот что будет делать наш скрейпер:

1. искать уязвимости;

2. получать информацию об уязвимости по ее названию на CVE.

Теперь откроем папку cver и создадим в ней файл под названием cve_scraper . Затем пропишем его базовые настройки:

Поиск уязвимостей

Например, через URL можно получить список всех уязвимостей, связанных с Python:


Для извлечения данных открываем инструменты разработчика ( Developer Console ) и исследуем DOM-элемент с нужным представлением. Для этого кликните правой кнопкой по любому месту на странице и выберите “исследовать элемент” ( inspect element ) либо нажмите Ctrl + F12 .


Если вы присмотритесь к DOM-структуре выше, то увидите, что результаты представлены в виде таблицы, а каждое значение указано в отдельной строке под таблицей. Такие данные можно запросто извлечь:

1. отправляем запрос в SEARCH_URL с помощью Requests и получаем DOM-содержимое;

2. преобразуем DOM-содержимое в объекты BeautifulSoup . Это позволит нам выделять DOM-элементы с помощью CSS-селекторов, XPATH и других методов;

Просмотр информации об уязвимостях


Откройте инструменты разработчика и исследуйте DOM-структуру.


Такая структура чуть сложнее, поскольку в строках таблицы отсутствует ID или название класса. Поэтому нам нужно пройтись циклом по каждой строке и проверить, не является ли она подзаголовком. Если да, то следующий элемент берется в качестве содержимого-потомка. Каждый подзаголовок отображается в th , а его содержимое — в td .


Готово! Мы успешно создали веб-скрейпер с CVE. Теперь добавим в него две функции ( search и lookup_sve ), которые будут искать уязвимости и получать информацию по ним через CVE-ID .

Создание консольного приложения

Наш следующий шаг — структурирование и создание консольного приложения через библиотеку Click.

Click — это Python-пакет для создания красивых интерфейсов командной строки с минимальным количеством кода и возможностью компоновки. Это один из лучших Python-пакетов для создания CLI, и с ним очень удобно работать.

Click позволяет создавать интерфейсы командной строки любого уровня — от самых простых до навороченных (например, Heroku).

В нашем CLI мы реализуем две команды:

1. поиск уязвимости;

2. просмотр уязвимости.

В папке cver создаем файл под названием __main__.py и прописываем его базовые настройки:

Поиск уязвимостей

Здесь мы будем импортировать функцию поиска search из веб-скрейпера и передавать ей аргумент keyword из командной строки. Таким образом, приложение будет искать уязвимости, совпадающие с ключевым словом:

Для запуска этой команды:


Просмотр уязвимости

Принцип тот же: используем lookup_cve из веб-скрейпера и передаем туда аргумент name из команды look_up .

Для запуска этой команды:


Готово! Мы успешно создали инструмент командной строки по поиску с CVE.

Публикация консольного приложения на PyPI

После того, как мы создали консольное приложение и убедились в его работоспособности, можно опубликовать его на PyPI в публичном доступе.

PyPI — это хранилище приложений для пакетов Python. Там можно найти практически все пакеты, которые устанавливаются через pip . Для публикации пакета потребуется аккаунт на PyPI. Если он у вас уже есть, то смело читайте дальше.

Настройка пакета

Следующий шаг — это настройка Python-пакета с помощью setup.py . Если вы хотите, чтобы ваш пакет попал на PyPI, то нужно снабдить его базовым описанием. Эта информация указывается в файле setup.py .

Откройте setup.py в основной директории проекта и поместите в начало файла следующий код:

В примере выше мы преобразовали содержимое файла README.md в одну строку для дальнейшего использования. Кроме того, мы перечислили все необходимые модули из requirements.txt и сгенерировали ссылки на их зависимости.

Ваш файл requirements.txt выглядит примерно так:

Теперь давайте рассмотрим параметры настроек:

В коде выше мы добавили множество строк. Но подробнее обсудим только те из них, которые нужны для установки.

1. name — название пакета, которое появится на PyPI;

2. version — текущая версия пакета;

3. packages — пакеты и подпакеты с исходным кодом. В ходе установки мы пользуемся модулем find_packages . Он автоматически находит все подпакеты;

4. install_requires — используется для перечисления всех зависимостей или сторонних библиотек пакета. В cver мы пользуемся Requests, Beautifulsoup 4 и Click. Их нужно включить в требования к установке install_requires . Нам не нужно добавлять эту информацию вручную, поскольку она присутствует в requirements.txt ;

5. entry_points — используется для создания скриптов, которые вызывают функцию внутри пакета. В данном случае мы создаем новый скрипт cver , который вызывает main() внутри файла cver/__main__.py . Наш основной элемент — это __main__.py , который вызывает функцию main() для запуска Click.

До того, как опубликовать пакет на PyPI или выложить в открытый доступ, необходимо снабдить его документацией. То, как будет выглядеть документация, целиком и полностью зависит от самого проекта. Это может быть как простой файл README.md , так и Readme.rst .

Пример хорошо оформленного README.md :

Кроме того, не забудьте создать файл .gitignore :

Публикация на PyPI

Теперь ваш пакет готов к публикации на PyPI. Еще раз проверьте, есть ли у вас уже аккаунт на PyPI. Добавьте к нему тестовый аккаунт на тестовом сервере PyPI. Этот аккаунт нужен для тестирования пакетов перед публикацией их на рабочем сервере.

Загружать Python-пакеты на PyPI мы будем с помощью специального инструмента — Twine. По идее, вы уже установили его на одном из предыдущих этапов. Если нет, то это можно сделать через pip install twine .

Создание и локальное тестирование пакета на тестовом сервере

Wheels — это zip-архив с кодом и готовыми расширениями. Source Archives содержит исходный код и вспомогательные файлы, упакованные в tar-архив.

Для локального тестирования пакета выполните:

Теперь мы можем использовать его как:

Для проверки пакета на тестовом сервере PyPI нужно сгенерировать сборку для локального тестирования. При создании этой сборки сгенерируются архивы Wheels и Source Archives.

Код ниже сгенерирует два файла в директории dist :

Затем воспользуемся Twine. Теперь мы можем загрузить пакет на тестовый сервер PyPI:

Затем у вас спросят логин и пароль.


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

Для установки из TestPyPI выполните следующую команду:

В тестовой среде вы можете проверить все команды и убедиться в их правильности перед публикацией пакета на рабочем сервере.

Протестировав все команды локально, переходите к публикации пакета на рабочем сервере:

В процессе загрузки укажите свой логин и пароль. Вот и все!


Теперь пакет можно установить через:

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

Заключение

В этой статье я пошагово объяснил процесс создания и публикации консольного приложения на Python.

Читайте также: