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

Область применения:yesVisual StudionoVisual Studio для Mac noVisual Studio Code

В рамках этого краткого (на 5–10 минут) знакомства с Visual Studio в качестве IDE для Python создается простое веб-приложение Python на платформе Flask. Вы создадите проект при помощи дискретных действий, которые помогут ознакомиться с базовыми функциями Visual Studio.

Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого. В установщике выберите рабочую нагрузку Разработка на Python.

Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого. В Visual Studio Installer выберите рабочую нагрузку Разработка на Python, а в сведениях об установке — Веб-поддержка в Python.

Python. Таймер с обратным отсчетом

Снимок экрана: Visual Studio Installer с выбранными рабочей нагрузкой

Создание проекта

Ниже приведены инструкции по созданию пустого проекта, который служит контейнером для приложения:

  1. Запустите Visual Studio 2019.
  2. На начальном экране выберите Создать новый проект.
  3. В диалоговом окне Создать новый проект введите «Python веб» в поле поиска вверху, выберите Веб-проект в среднем списке и нажмите Далее: Экран создания проекта с выбранным веб-проектом PythonЕсли вы не видите шаблоны проектов Python, запустите Visual Studio Installer, выберите «Дополнительно>изменить», выберите рабочую нагрузку разработки Python, а затем нажмите кнопку «Изменить». Рабочая нагрузка разработки Python в установщике Visual Studio
  4. В следующем диалоговом окне Настроить новый проект введите HelloPython в качестве имени проекта, укажите расположение и выберите Создать. (Имя решения автоматически устанавливается в соответствии с именем проекта.) Диалоговое окно
  5. Новый проект откроется в обозревателе решений в правой области. Проект пока пуст, так как он не содержит других файлов. Снимок экрана: новый пустой проект в Обозревателе решений.
  1. Откройте Visual Studio 2022.
  2. На начальном экране выберите Создать новый проект.
  3. В диалоговом окне Создание проекта введите «Python web» в поле поиска вверху. Выберите Веб-проект из списка, а затем нажмите Далее: Снимок экрана: окно Если вы не видите шаблоны веб-проекта Python, выберите пункт Средства>Get Tools and Features (Получить средства и компоненты), чтобы запустить Visual Studio Installer. В Installer выберите рабочую нагрузку Разработка на Python, а в разделе Сведения об установке щелкните Веб-поддержка в Python. Затем нажмите кнопку Изменить.
  4. В диалоговом окне Настроить новый проект введите «HelloPython» в качестве имени проекта, укажите расположение, а затем выберите Создать. Поле Имя решения автоматически обновится в соответствии с именем проекта. Снимок экрана: диалоговое окно

Новый проект откроется в обозревателе решений в правой области. Проект пока пуст, так как он не содержит других файлов.

Урок 2. Python. Быстрый старт. Первая программа на Python

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

Вопрос. В чем преимущество создания проекта в Visual Studio для приложений Python?

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

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

Вопрос. Что представляет собой «решение», которое отображается в обозревателе решений?

Ответ. Решение Visual Studio — это контейнер, который помогает управлять одним или несколькими связанными проектами в виде группы. В решении хранятся параметры конфигурации, которые не относятся к конкретному проекту. Проекты в решении также могут ссылаться друг на друга. Например, при запуске проекта приложения Python может автоматически создаваться второй проект, например расширение C++, используемое приложением Python.

Установка библиотеки Flask

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

А сейчас выполните следующие шаги, чтобы установить библиотеку Flask в глобальном окружении по умолчанию, которое Visual Studio использует для этого проекта.

  1. Разверните в проекте узел Окружения Python, чтобы увидеть среду по умолчанию для проекта. Среда по умолчанию в обозревателе решений
  2. Щелкните окружение правой кнопкой мыши и выберите команду Управлять пакетами Python. . Эта команда открывает вкладку Пакеты (PyPI) в окне Окружения Python.
  3. В поле поиска введите «flask». Если Flask отображается под полем поиска, этот шаг можно пропустить. В противном случае выберите Запустить команду: pip install flask. Подтвердите запросы на права администратора и наблюдайте за ходом выполнения в окне Вывод в Visual Studio. (Запрос на повышение прав выводится в том случае, если папка пакетов для глобальной среды находится в защищенной области, такой как C:Program Files.) Установка библиотеки Flask с помощью pip
  1. Разверните в проекте узел Окружения Python, чтобы увидеть среду по умолчанию для проекта. Снимок экрана: окружение по умолчанию в Обозревателе решений.
  2. Щелкните окружение правой кнопкой мыши и выберите Открыть пакеты Python. Эта команда открывает вкладку Пакеты (PyPI) в окне Окружения Python.
  3. В поле поиска введите «flask». Если Flask отображается под полем поиска, этот шаг можно пропустить. В противном случае выберите Выполнить команду: pip install flask. Снимок экрана: установка библиотеки Flask с помощью команды pip install.Запрос на повышение прав отображается, если папка пакетов глобального окружения находится в защищенной области, например в папке C:Program Files. Подтвердите запросы на права администратора. Следите за ходом выполнения в окне Вывод в Visual Studio.

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

Установленная библиотека Flask в обозревателе решений

Снимок экрана: установленная библиотека Flask, отображающаяся в Обозревателе решений.

Вместо установки библиотек в глобальном окружении разработчики обычно создают «виртуальное окружение», в котором устанавливаются библиотеки для определенного проекта. Шаблоны Visual Studio обычно обеспечивают такую возможность, как описано в кратком руководстве по созданию проекта Python с помощью шаблона.

Вопрос. Где можно подробнее узнать о других доступных пакетах Python?

Ответ. Перейдите к странице индекса пакетов Python.

Добавление файла кода

Теперь можно добавить немного кода на Python, чтобы реализовать простейшее веб-приложение.

  1. Щелкните проект правой кнопкой мыши в Обозреватель решений и выберите «Добавить>новый элемент».
  2. В открывшемся диалоговом окне выберите элемент Пустой файл Python, присвойте файлу имя app.py и нажмите кнопку Добавить. Файл автоматически откроется в редакторе кода Visual Studio.
  3. Скопируйте следующий код и вставьте его в app.py:
  1. Щелкните проект правой кнопкой мыши в Обозреватель решений и выберите «Добавить>новый элемент».
  2. В появившемся диалоговом окне выберите Пустой. В качестве имени введите app.py, а затем нажмите кнопку Добавить. Файл автоматически откроется в редакторе кода Visual Studio.
  3. Скопируйте следующий код и вставьте его в app.py:
Читайте также:
Как найти стандартные программы в компьютере

Как вы могли заметить, в диалоговом окне Добавить>Создать элемент отображается много других типов файлов, которые можно добавить в проект Python, в том числе класс Python, пакет Python, модульный тест Python, файлы web.config и многое другое. Как правило, эти шаблоны элементов прекрасно подходят для быстрого создания файлов при помощи полезного стандартного кода.

Вопрос. Где можно подробнее узнать о Flask?

Ответ. Ознакомьтесь с документацией по Flask. Начать можно с краткого руководства по Flask.

Запуск приложения

  1. В Обозревателе решений щелкните правой кнопкой мыши файл app.py, а затем в раскрывающемся меню выберите Задать как файл запуска. С помощью этой команды файл кода задается как запускаемый в Python при запуске приложения.

Задание файла запуска для проекта в обозревателе решений

Снимок экрана: установка файла запуска для проекта в Обозревателе решений.

Вопрос. В чем разница между командами «Запустить без отладки» и «Начать отладку»?

Ответ. Команда Начать отладку используется, чтобы запустить приложение в контексте отладчика Visual Studio. С помощью отладчика можно устанавливать точки останова, проверять переменные и поэтапно выполнять код строка за строкой. С отладчиком приложения могут работать медленнее, так как для отладки используются различные обработчики.

Команда Запустить без отладки запускает приложение напрямую, как если бы оно запускалось из командной строки без контекста отладки. Команда Запустить без отладки также автоматически запускает браузер и переходит по URL-адресу, указанному на вкладке Отладка свойств проекта.

Дальнейшие действия

Поздравляем с запуском вашего первого приложения Python из Visual Studio. Вы немного узнали об использовании Visual Studio в качестве интегрированной среды разработки Python!

Так как приведенные в этом руководстве инструкции довольно общие, вы, вероятно, догадались, что их можно и нужно автоматизировать. Такая автоматизация выполняется при помощи шаблонов проектов Visual Studio. Изучите краткое руководство Создание проекта Python с использованием шаблона, чтобы узнать, как создать веб-приложение, похожее на описанные в этой статье, но с меньшим количеством шагов.

Чтобы перейти к более полному учебнику по работе с Python в Visual Studio, в том числе к использованию интерактивного окна, отладки, визуализации данных и работы с Git, см. раздел Учебник. Начало работы с Python в Visual Studio.

Более подробно ознакомиться с возможностями Visual Studio можно по приведенным ниже ссылкам.

  • Сведения о шаблонах веб-приложений Python в Visual Studio.
  • Сведения об отладке Python
  • Общие сведения об интегрированной среде разработки Visual Studio.

Источник: learn.microsoft.com

Пишем первую программу на Python в Linux

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

Для написания своей первой программы на Python в Linux, просто запустите свой любимый Linux и следуйте шагам этого совета.

Для написания Python-программ можно использовать любой из текстовых редакторов (я буду рассматривать редактор vi/vim). Не пугайтесь, основное количество программистов не использует для написания простых (и не только!) программ какое-либо многофункциональное программное обеспечение (типа сред программирования и т.п.). Достаточно воспользоваться тем, что есть под рукой!

Пишем первую программу на Python в Linux

Давайте попробуем посмотреть наличие Python в вашем дистрибутиве Linux. Для этого выполните команду: which python и, в случае успеха, вы увидите что-то вроде этого:

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

Создадим каталог, в котором мы будем практиковаться в написании программ на Python и назовем его testplace: mkdir testplace и перейдем в него, выполнив команду: cd ~/testplace

Пишем первую программу на Python в Linux

Теперь создадим текстовый файл first.py, который и будет нашей первой программой на Python. Выполните команду: touch first.py и посмотрим его наличие командой: ls он обязательно там должен появиться!

Обратите внимание, что расширение у созданного нами файла должно быть .py. Это расширение стандартно для программ на Python и вскоре вы увидите, что очень много программ на Python уже существуют в вашей системе (если у вас Linux/Unix).

Теперь приступаем к написанию кода нашей первой программы на Python.

Пишем первую программу на Python в Linux

Откроем созданный нами файл в редакторе vi/vim: vi first.py и впишем в него следующие строки: #!/usr/bin/python
# My first program on Python!
print «Hello World. »

Выйдем из файла с сохранением, выполнив: :wq .

Для того, чтобы выполнить написанную нами программу в Linux, нам необходимо назначить ей права на выполнение. Сделаем это командой: chmod x first.py

Пишем первую программу на Python в Linux

Пришло время попробовать запустить созданную нами нашу первую программу на Python. Выполните в командной строке: ./first.py и посмотрите на результат. Он должен быть таким:

Код нашей первой программы очень прост:

1 строка ( #!/usr/bin/python ) — мы указываем путь к интерпретатору. Этой строкой будут начинаться многие дальнейшие наши программы, поэтому введем это за правило.

2 строка ( # My first program on Python! ) — комментарий. Все комментарии начинаются со знака #. Заметьте, что предыдущая строка — не комментарий!

3 строка ( print «Hello World. » ) — это просто вывод на экран надписи «Hello World. «.

Как создавать и публиковать консольные приложения на Python

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 .

Читайте также:
Как работать в программе dos

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

mkvirtualenv -p /usr/bin/python cvecli-env mkdir cvecli cd cvecli mkdir cver touch setup.py touch README.md touch cver/__init__.py touch .gitignore pip install requests beautifulsoup4 lxml twine click pip freeze > requirements.txt

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

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

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

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

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

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

import requests from bs4 from BeautifulSoup SEARCH_URL = «https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=» CVE_URL = «https://cve.mitre.org/cgi-bin/cvename.cgi?name=» def get_html(url): request = requests.get(url) if request.status_code == 200: return request.content else: raise Exception(«Bad request») def search(s): pass def lookup_cve(name): pass

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

Для поиска уязвимостей на CVE используется URL в следующем формате: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword= . Такой формат позволяет извлекать список уязвимостей, соответствующих ключевому слову.

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

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

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

def search(s): url = f»» results=[] html = get_html(url) soup = BeautifulSoup(html, «lxml») result_rows = soup.select(«#TableWithRules table tr») for row in result_rows: _row = <> name = row.select_one(«td a») description = row.select_one(«td:nth-child(2)») if all([name, description]): _row[«name»] = name.text _row[«url»] = name.get(«href») _row[«description»] = description.text results.append(_row) return results

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

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

3. выделяем все tr под таблицей #TableWithRules . Выделяем первый столбец строки в качестве названия, а в качестве описания берем второй. Затем извлекаем текст.

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

Чтобы просмотреть информацию об уязвимости, нужно взять ее CVE-ID и передать по этому адресу: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-ID.

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

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

def lookup_cve(name): url = f»» html = get_html(url) soup = BeautifulSoup(html, «lxml») result_rows = soup.select(«#GeneratedTable table tr») subtitle = «» description = «» raw_results = <> for row in result_rows: head = row.select_one(«th») if head: subtitle = head.text else: body = row.select_one(«td») description = body.text.strip().strip(«n») raw_results[subtitle.lower()] = description return raw_results

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

import requests from bs4 import BeautifulSoup SEARCH_URL = «https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=» CVE_URL = «https://cve.mitre.org/cgi-bin/cvename.cgi?name=» def get_html(url): request = requests.get(url) if request.status_code == 200: return request.content else: raise Exception(«Bad request») def search(s): url = f»» results=[] html = get_html(url) soup = BeautifulSoup(html, «lxml») result_rows = soup.select(«#TableWithRules table tr») for row in result_rows: _row = <> name = row.select_one(«td a») description = row.select_one(«td:nth-child(2)») if all([name, description]): _row[«name»] = name.text _row[«url»] = name.get(«href») _row[«description»] = description.text results.append(_row) return results def lookup_cve(name): url = f»» html = get_html(url) soup = BeautifulSoup(html, «lxml») result_rows = soup.select(«#GeneratedTable table tr») subtitle = «» description = «» raw_results = <> for row in result_rows: head = row.select_one(«th») if head: subtitle = head.text else: body = row.select_one(«td») description = body.text.strip().strip(«n») raw_results[subtitle.lower()] = description return raw_results

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

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

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

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

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

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

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

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

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

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

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

python cver/__main__.py search python

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

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

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

python cver/__main__.py look-up CVE-2013–4238

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

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

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

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

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

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

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

from setuptools import setup, find_packages from io import open from os import path import pathlib # Директория, в которой содержится этот файл HERE = pathlib.Path(__file__).parent # Текст README-файла README = (HERE / «README.md»).read_text() # Автоматически собирает в requirements.txt все модули для install_requires, а также настраивает ссылки на зависимости with open(path.join(HERE, ‘requirements.txt’), encoding=’utf-8′) as f: all_reqs = f.read().split(‘n’) install_requires = [x.strip() for x in all_reqs if (‘git+’ not in x) and ( not x.startswith(‘#’)) and (not x.startswith(‘-‘))] dependency_links = [x.strip().replace(‘git+’, ») for x in all_reqs if ‘git+’ not in x]

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

Читайте также:
Приведите примеры прикладных программ специального назначения

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

click requests beautifulsoup4 lxml twine

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

setup ( name = ‘cver’, description = ‘A simple commandline app for searching and looking up opensource vulnerabilities’, version = ‘1.0.0’, packages = find_packages(), # list of all packages install_requires = install_requires, python_requires=’>=2.7′, # any python greater than 2.7 entry_points=»’ [console_scripts] cver=cver.__main__:main »’, author=»Oyetoke Toby», keyword=»cve, vuln, vulnerabilities, security, nvd», long_description=README, long_description_content_type=»text/markdown», license=’MIT’, url=’https://github.com/CITGuru/cver’, download_url=’https://github.com/CITGuru/cver/archive/1.0.0.tar.gz’, dependency_links=dependency_links, author_email='[email protected]’, classifiers=[ «License :: OSI Approved :: MIT License», «Programming Language :: Python :: 2.7», «Programming Language :: Python :: 3», «Programming Language :: Python :: 3.7», ] )

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

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 :

# CVER A simple commandline app for searching and looking up opensource vulnerabilities # Установка ## Через Pip «`bash $ pip install cver «` ## Вручную «`bash $ git clone https://github.com/citguru/cevr $ cd cver $ python setup.py install «` # Использование «`bash $ cver «` ## Поиск `search ` «`bash $ cver search python «` ## Просмотр `search ` «`bash $ cver look-up CVE-2020-2121 «`

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

# Байтовая компиляция / оптимизация / DLL-файлы __pycache__/ *.py[cod] *$py.class # C-расширения *.so # Сборка дистрибутива / пакета .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Обычно такие файлы пишутся Python-скриптом по шаблону # до того, как PyInstaller создаст exe. Это нужно для добавления в файл даты и прочей информации. *.manifest *.spec # Логи установщика pip-log.txt pip-delete-this-directory.txt # Модульные тесты / отчеты по покрытию htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/ .pytest_cache/ # Переводы *.mo *.pot # Всякое на Django: *.log local_settings.py db.sqlite3 # Всякое на Flask: instance/ .webassets-cache # Всякое на Scrapy: .scrapy # Sphinx-документация docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # pyenv .python-version # Schedule-файл Celery Beat celerybeat-schedule # Проанализированные файлы SageMath *.sage.py # Окружения .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Настройки Spyder Project .spyderproject .spyproject # Настройки Rope Project .ropeproject # Документация mkdocs /site # mypy .mypy_cache/

from setuptools import setup, find_packages from io import open from os import path import pathlib # Директория, в которой содержится этот файл HERE = pathlib.Path(__file__).parent # Текст README-файла README = (HERE / «README.md»).read_text() # Автоматически собирает в requirements.txt все модули для install_requires with open(path.join(HERE, ‘requirements.txt’), encoding=’utf-8′) as f: all_reqs = f.read().split(‘n’) install_requires = [x.strip() for x in all_reqs if (‘git+’ not in x) and ( not x.startswith(‘#’)) and (not x.startswith(‘-‘))] dependency_links = [x.strip().replace(‘git+’, ») for x in all_reqs if ‘git+’ not in x] setup ( name = ‘cver’, description = ‘A simple commandline app for searching and looking up opensource vulnerabilities’, version = ‘1.0.0’, packages = find_packages(), # list of all packages install_requires = install_requires, python_requires=’>=2.7′, # any python greater than 2.7 entry_points=»’ [console_scripts] cver=cver.__main__:main »’, author=»Oyetoke Toby», keyword=»cve, vuln, vulnerabilities, security, nvd», long_description=README, long_description_content_type=»text/markdown», license=’MIT’, url=’https://github.com/CITGuru/cver’, download_url=’https://github.com/CITGuru/cver/archive/1.0.0.tar.gz’, dependency_links=dependency_links, author_email='[email protected]’, classifiers=[ «License :: OSI Approved :: MIT License», «Programming Language :: Python :: 2.7», «Programming Language :: Python :: 3», «Programming Language :: Python :: 3.7», ] )

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

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

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

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

Python-пакеты, опубликованные на PyPI, не распространяются в виде «голого» кода. Они оборачиваются в дистрибутивы. Самыми распространенными форматами дистрибутивов в Python являются Wheels и Source Archives.

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

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

python setup.py install

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

cver search python

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

python setup.py sdist bdist_wheel

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

cvecli/ │ └── dist/ ├── cver-1.0.0-py3-none-any.whl └── cver-1.0.0.tar.gz

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

twine upload — repository-url https://test.pypi.org/legacy/ dist/*

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

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

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

pip install -i https://test.pypi.org/simple/ cver==1.0.0

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

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

twine upload dist/*

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

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

pip install cver

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

Заключение

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

  • Проверка типов в Python
  • Attr — одна из лучших практик объектно-ориентированного Python
  • 15 Python пакетов, которые нужно попробовать

Источник: nuancesprog.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru