как программировать на python на linux
Установка Python 3 и настройка среды программирования на сервере Ubuntu 18.04
Published on January 24, 2020
Введение
Python — гибкий и универсальный язык программирования, который можно использовать для разнообразных задач. Особенно полезен для создания скриптов, автоматизации, анализа данных, машинного обучения и разработки серверных компонентов приложений. Разработчики выпустили первую версию языка Python в 1991 году с целью создать интересный язык программирования и назвали его в честь британской комедийной группы Monty Python. Python легко настраивать, и с его помощью можно создавать относительно простой код с немедленным получением уведомлений об ошибках. Это отличный выбор как для начинающих, так и для опытных разработчиков. Python 3 — самая последняя версия этого языка, которая считается будущим Python.
В этом обучающем модуле вы научитесь настраивать на сервере Ubuntu 18.04 среду программирования Python 3. Программирование на сревере дает много преимуществ и обеспечивает поддержку совместной работы над проектами разработки. Общие принципы этого обучающего модуля относятся к любым дистрибутивам Debian Linux.
Предварительные требования
Для выполнения этого обучающего руководства у вас должен быть пользователь без прав root с привилегиями sudo на сервере Ubuntu 18.04. Чтобы выполнить необходимую первоначальную настройку, воспользуйтесь нашим руководством по ручной начальной настройке сервера или запустите наш автоматизированный скрипт.
Если вы еще не знакомы со средой терминалой, вам будет полезна статья «Введение в терминалы Linux».
После настройки сервера и пользователя вы можете продолжить.
Шаг 1 — Настройка Python 3
Ubuntu 18.04 и другие версии Debian Linux поставляются с предустановленными средами программирования Python 3 и Python 2. Чтобы убедиться в обновлении версий, мы выполним обновление системы с помощью команды apt для работы с инструментом Ubuntu Advanced Packaging Tool:
После завершения этой процедуры мы можем проверить установленную в системе версию Python 3 с помощью следующей команды:
На экране терминала будет выведена страница результатов, где вы сможете увидеть номер версии. Хотя номер версии может различаться, результат будет выглядеть примерно так:
Для управления программными пакетами Python мы установим инструмент pip, предназначенный для установки и управления пакетами программирования, которые мы можем захотеть использовать в наших проектах разработки. Дополнительную информацию о модулях и пакетах, которые можно установить с помощью pip, можно найти в документе «Импортирование модулей в Python 3».
Пакеты Python можно установить с помощью следующей команды:
Можжно установить несколько дополнительных пакетов и средств разработки, чтобы получить надежную основу для нашей среды программирования:
После настройки Python и установки pip и других инструментов мы можем настроить виртуальную среду для наших проектов разработки.
Шаг 2 — Настройка виртуальной среды
Виртуальные среды позволяют выделять на сервере изолированную область для проектов Python. Благодаря этому каждый из ваших проектов может иметь собственный набор зависимостей, которые не помешают функционированию других ваших проектов.
Настройка среды программирования обеспечивает нам дополнительный контроль над нашими проектами Python и над обработкой разных версий пакетов. Это особенно важно при работе с пакетами сторонних разработчиков.
Вы можете настроить любое желаемое количество сред программирования Python. Каждая среда представляет собой каталог или папку на сервере, содержащую несколько скриптов, обеспечивающих ее работу.
Хотя существует несколько способов создания среды программирования в Python, мы используем модуль venv, входящий в состав стандартной библиотеки Python 3. Для установки venv введите следующую команду:
С этим модулем мы готовым приступить к созданию сред. Вначале выберем каталог, где мы хотим разместить наши среды программирования Python, или создадим такой каталог с помощью команды mkdir :
Для создания среды перейдите в каталог, где вы хотите разместить среды, и введите следующую команду:
Команда pyvenv настраивает новый каталог, содержащий несколько элементов, которые мы можем просмотреть с помощью команды ls :
Совместная работа этих файлов обеспечивает изоляцию ваших проектов в более широком контексте вашего локального компьютера, так что системные файлы и файлы проекта не смешиваются. Будет очень полезно использовать контроль версий и обеспечить каждому из ваших проектов доступ к конкретным пакетам, которые ему необходимы. Python Wheels — это формат готовых пакетов для Python, помогающий ускорить разработку программного обеспечения за счет сокращения количества операций компиляции. Он находится в каталоге share в Ubuntu 18.04.
Чтобы использовать эту среду, ее нужно активировать. Для этого введите следующую команду, вызывающую скрипт activate:
Префикс сообщает нам, что среда my_env активна, и что при создании программ они будут использовать настройки и пакеты этой конкретной среды.
После выполнения этих шагов ваша виртуальная среда готова к использованию.
Шаг 3 — Создание программы «Hello, World»
Теперь мы настроили нашу виртуальную среду и готовы создать традиционную программу «Hello, World!» Это позволит нам протестировать нашу среду и познакомиться с Python поближе, если мы еще не сделали этого.
Для этого мы откроем текстовый редактор командной строки (например, nano) и создадим новый файл:
Когда текстовый файл откроется в окне терминала, мы введем нашу программу:
После выхода из nano и возврата в оболочку мы запустим программу:
Заключение
Поздравляем! Вы настроили среду программирования Python 3 на своем сервере Debian Linux можете начинать проект по программированию!
Если вы используете локальный компьютер, а не сервер, воспользуйтесь обучающем модулем «Установка и настройка локальной среды программирования для Python 3» для вашей операционной системы.
Ваш сервер готов к разработке программного обеспечения. Дополнительную информацию о программировании на Python вы можете узнать из нашей бесплатной электронной книги «Программирование на Python 3» или в обучающих модулях по проектам программирования.
Пишем первую программу на Python в Linux
Python доступен практически в любом современном дистрибутиве Linux, поэтому тем, кто собирается написать свою первую программу на Python в Linux, установка никаких дополнительных программ не потребуется (в дальнейшем нам конечно понадобятся кое-какие дополнительные библиотеки Python, но мы обязательно разберем их установку).
Для написания своей первой программы на Python в Linux, просто запустите свой любимый Linux и следуйте шагам этого совета.
Для написания Python-программ можно использовать любой из текстовых редакторов (я буду рассматривать редактор vi/vim). Не пугайтесь, основное количество программистов не использует для написания простых (и не только!) программ какое-либо многофункциональное программное обеспечение (типа сред программирования и т.п.). Достаточно воспользоваться тем, что есть под рукой!
Давайте попробуем посмотреть наличие Python в вашем дистрибутиве Linux. Для этого выполните команду: which python и, в случае успеха, вы увидите что-то вроде этого:
Как видим, Python присутствует в нашей системе и это хороший знак для того, чтобы продолжить наши действия.
Создадим каталог, в котором мы будем практиковаться в написании программ на Python и назовем его testplace: mkdir testplace и перейдем в него, выполнив команду: cd
Теперь создадим текстовый файл first.py, который и будет нашей первой программой на Python. Выполните команду: touch first.py и посмотрим его наличие командой: ls он обязательно там должен появиться!
Обратите внимание, что расширение у созданного нами файла должно быть .py. Это расширение стандартно для программ на Python и вскоре вы увидите, что очень много программ на Python уже существуют в вашей системе (если у вас Linux/Unix).
Теперь приступаем к написанию кода нашей первой программы на Python.
Откроем созданный нами файл в редакторе vi/vim: vi first.py и впишем в него следующие строки: #!/usr/bin/python
# My first program on Python!
print «Hello World. »
Для того, чтобы выполнить написанную нами программу в Linux, нам необходимо назначить ей права на выполнение. Сделаем это командой: chmod x first.py
Код нашей первой программы очень прост:
Мы с вами написали крайне примитивную программу, выводящую на экран всего лишь одну строку, но многие учебники по программированию начинаются именно с этой «программы». Это стандарт, с которого начинают все программисты. С него начали и мы.
В последующих статьях мы не будем разбирать то, как создать файл и как назначить ему права на выполнение, а будем разбирать код создаваемых программ и сам процесс их работы.
Основы программирования Python
В этой статье мы рассмотрим основы программирования на Python, мы постараемся охватить все основные возможности, которые вам понадобятся чтобы начать пользоваться языком. Мы будем рассматривать использование классов и методов для решения различных задач. Предполагается, что вы уже знакомы с основами и синтаксисом языка.
Что такое Python?
Это снижает производительность, но очень удобно. Здесь присутствует интерпретатор, в который вы можете вводить команды и сразу же видеть их результат. Такая интерактивная работа очень сильно помогает в обучении.
Работа в интерпретаторе
Запустить интерпретатор Python очень просто в любой операционной системе. Например, в Linux достаточно набрать команду python в терминале:
Именно третья версия будет рассматриваться в этой статье. А теперь рассмотрим основные возможности этого языка.
Операции со строками
Строки в Python неизменяемые, вы не можете изменить один из символов строки. Любое изменение содержимого требует создания новой копии. Откройте интерпретатор и выполняйте перечисленные ниже примеры, для того чтобы лучше усвоить все написанное:
1. Объединение строк
str = «welcome » + «to python»
print (str)
2. Умножение строк
str = «Losst» * 2
print (str)
3. Объединение с преобразованием
Вы можете объединить строку с числом или логическим значением. Но для этого нужно использовать преобразование. Для этого существует функция str():
str = «Это тестовое число » + str(15)
print (str)
4. Поиск подстроки
Вы можете найти символ или подстроку с помощью метода find:
str = «Добро пожаловать на losst.ru»
print(str.find(«losst.ru»))
str = «Добро пожаловать на сайт losst.ru»
print(str.find(«losst»,26))
5. Получение подстроки
Мы получили позицию подстроки, которую ищем, а теперь как получить саму подстроку и то, что после нее? Для этого используйте такой синтаксис [начало:конец], просто укажите два числа или только первое:
str = «Один два три»
print(str[:2])
print(str[2:])
print(str[3:5])
print(str[-1])
6. Замена подстроки
Вы можете заменить часть строки с помощью метода replace:
str = «Этот сайт про Linux»
str2 = str.replace(«Linux», «Windows»)
print(str2)
Если вхождений много, то можно заменить только первое:
str = «Это сайт про Linux и я подписан на этот сайт»
str2 = str.replace(«сайт», «страница»,1)
print(str2)
7. Очистка строк
Вы можете удалить лишние пробелы с помощью функции strip:
str = » Это веб-сайт про Linux »
print(str.strip())
8. Изменение регистра
Для изменения регистра символов существуют специальные функции:
str=»Добро пожаловать на Losst»
print(str.upper())
print(str.lower())
9. Конвертирование строк
str=»10″
str2=»20″
print(str+str2)
print(int(str)+int(str2))
10. Длина строк
Вы можете использовать функции min(), max(), len() для расчета количества символов в строке:
str=»Добро пожаловать на сайт Losst»
print(min(str))
print(max(str))
print(len(str))
11. Перебор строки
Вы можете получить доступ к каждому символу строки отдельно с помощью цикла for:
str=»Добро пожаловать на сайт»
for i in range(len(str)):
print(str[i])
Для ограничения цикла мы использовали функцию len(). Обратите внимание на отступ. Программирование на python основывается на этом, здесь нет скобок для организации блоков, только отступы.
Операции с числами
Числа в Python достаточно просто объявить или применять в методах. Можно создавать целые числа или числа с плавающей точкой:
num1 = 15
num2 = 3,14
1. Округление чисел
Вы можете округлить число с помощью функции round, просто укажите сколько знаков нужно оставить:
2. Генерация случайных чисел
Получить случайные числа можно с помощью модуля random:
import random
print(random.random())
По умолчанию число генерируется из диапазона от 0,0 до 1,0. Но вы можете задать свой диапазон:
import random
numbers=[1,2,3,4,5,6,7]
print(random.choice(numbers))
Операции с датой и временем
Язык программирования Python имеет модуль DateTime, который позволяет выполнять различные операции с датой и временем:
import datetime
cur_date = datetime.datetime.now()
print(cur_date)
print(cur_date.year)
print(cur_date.day)
print(cur_date.weekday())
print(cur_date.month)
print(cur_date.time())
В примере показано как извлечь нужное значение из объекта. Вы можете получить разницу между двумя объектами:
Вы можете сами создавать объекты даты с произвольным значением:
time1 = datetime.datetime.now()
time2 = datetime.timedelta(days=3)
time3=time1+time2
print(time3.date())
1. Форматирование даты и времени
Метод strftime позволяет изменить формат даты и времени зависимо от выбранного стандарта или указанного формата. Вот основные символы форматирования:
import datetime
date1 = datetime.datetime.now()
print(date1.strftime(‘%d. %B %Y %I:%M%p’))
2. Создать дату из строки
Вы можете использовать функцию strptime() для создания объекта даты из строки:
import datetime
date1=datetime.datetime.strptime(«2016-11-21», «%Y-%m-%d»)
date2=datetime.datetime(year=2015, month=11, day=21)
print(date1);
print(date2);
Операции с файловой системой
1. Копирование файлов
Для копирования файлов нужно использовать функции из модуля subutil:
import shutil
new_path = shutil.copy(‘file1.txt’, ‘file2.txt’)
new_path = shutil.copy(‘file1.txt’, ‘file2.txt’, follow_symlinks=False)
2. Перемещение файлов
Перемещение файлов выполняется с помощью функции move:
Функция rename из модуля os позволяет переименовывать файлы:
import os
os.rename(‘file1.txt’, ‘file3.txt’)
3. Чтение и запись текстовых файлов
Вы можете использовать встроенные функции для открытия файлов, чтения или записи данных в них:
fd = open(‘file1.txt’)
content = fd.read()
print(content)
Сначала нужно открыть файл для работы с помощью функции open. Для чтения данных из файла используется функция read, прочитанный текст будет сохранен в переменную. Вы можете указать количество байт, которые нужно прочитать:
fd = open(‘file1.txt’)
content = fd.read(20)
print(content)
Если файл слишком большой, вы можете разбить его на строки и уже так выполнять обработку:
content = fd.readlines()
print(content[0])
fd = open(‘file1.txt’,’w’)
content = fd.write(‘Новое содержимое’)
И добавление в конец файла:
fd = open(‘file1.txt’,’a’)
content = fd.write(‘Новое содержимое’)
4. Создание директорий
Чтобы создать директорию используйте функцию mkdir из модуля os:
import os
os.mkdir(‘./новая папка’)
5. Получение времени создания
Вы можете использовать функции getmtime(), getatime() и getctime() для получения времени последнего изменения, последнего доступа и создания. Результат будет выведен в формате Unix, поэтому его нужно конвертировать в читаемый вид:
import os
import datetime
tim=os.path.getctime(‘./file1.txt’)
print(datetime.datetime.fromtimestamp(tim))
6. Список файлов
С помощью функции listdir() вы можете получить список файлов в папке:
import os
files= os.listdir(‘.’)
print(files)
Для решения той же задачи можно использовать модуль glob:
import glob
files=glob.glob(‘*’)
print(files)
7. Сериализация объектов Python
Сериализация позволяет сохранить объект в строку, для его последующего восстановления. Для этого используйте модуль pickle:
import pickle
fd = open(‘myfile.pk ‘, ‘wb’)
pickle.dump(mydata,fd)
Затем для восстановления объекта используйте:
import pickle
fd = open(‘myfile.pk ‘, ‘rb’)
mydata = pickle.load(fd)
8. Сжатие файлов
Стандартная библиотека Python позволяет работать с различными форматами архивов, например, zip, tar, gzip, bzip2. Чтобы посмотреть содержимое файла используйте:
import zipfile
my_zip = zipfile.ZipFile(‘my_file.zip’, mode=’r’)
print(file.namelist())
А для создания zip архива:
import zipfile
file=zipfile.ZipFile(‘files.zip’,’w’)
file.write(‘file1.txt’)
file.close()
Также вы можете распаковать архив:
import zipfile
file=zipfile.ZipFile(‘files.zip’,’r’)
file.extractall()
file.close()
Вы можете добавить файлы в архив так:
import zipfile
file=zipfile.ZipFile(‘files.zip’,’a’)
file.write(‘file2.txt’)
file.close()
9. Разбор CSV и Exel файлов
С помощью модуля pandas можно смотреть и разбирать содержимое CSV и Exel таблиц. Сначала нужно установить модуль с помощью pip:
sudo pip install pandas
Затем для разбора наберите:
import pandas
data=pandas.read_csv(‘file.csv)
По умолчанию pandas использует первую колонку для заголовков каждой из строк. Вы можете задать колонку для индекса с помощью параметра index_col или указать False, если он не нужен. Чтобы записать изменения в файл используйте функцию to_csv:
Таким же образом можно разобрать файл Exel:
data = pd.read_excel(‘file.xls’, sheetname=’Sheet1′)
Если нужно открыть все таблицы, используйте:
Затем можно записать все данные обратно:
Работа с сетью в Python
Программирование на Python 3 часто включает работу с сетью. Стандартная библиотека Python включает в себя возможности работы с сокетами для доступа к сети на низком уровне. Это нужно для поддержки множества сетевых протоколов.
import socket
host = ‘192.168.1.5’
port = 4040
my_sock = socket.create_connection ((host, port))
Этот код подключается к порту 4040 на машине 192.168.1.5. Когда сокет открыт, вы можете отправлять и получать данные:
Нам необходимо писать символ b, перед строкой, потому что надо передавать данные в двоичном режиме. Если сообщение слишком большое, вы можете выполнить итерацию:
msg = b’Longer Message Goes Here’
mesglen = len(msg)
total = 0
while total
Для получения данных вам тоже нужно открыть сокет, только используется метод my_sock_recv:
buffer = bytearray(b’ ‘ * 2000)
my_sock.recv_into(buffer)
Если буфер пуст, туда будет записано полученное сообщение.
Работа с почтой
Стандартная библиотека Python позволяет получать и отправлять электронные сообщения.
1. Получение почты от POP3 сервера
Для получения сообщений мы используем POP сервер:
import getpass,poplib
pop_serv = poplib.POP3(‘192.168.1.5’)
pop_serv.user(«myuser»)
pop_serv.pass_(getpass.getpass())
Модуль getpass позволяет получить пароль пользователя безопасным образом, так что он не будет отображаться на экране. Если POP сервер использует защищенное соединение, вам нужно использовать класс POP3_SSL. Если подключение прошло успешно, вы можете взаимодействовать с сервером:
msg_list = pop_serv.list() # to list the messages
msg_count = pop_serv.msg_count()
Для завершения работы используйте:
2. Получение почты от IMAP сервера
Для подключения и работы с сервером IMAP используется модуль imaplib:
import imaplib, getpass
my_imap = imaplib.IMAP4(‘imap.server.com’)
my_imap.login(«myuser», getpass.getpass())
Если ваш IMAP сервер использует защищенное соединение, нужно использовать класс IMAP4_SSL. Для получения списка сообщений используйте:
data = my_imap.search(None, ‘ALL’)
Затем вы можете выполнить цикл по выбранному списку и прочитать каждое сообщение:
msg = my_imap.fetch(email_id, ‘(RFC822)’)
Но, не забудьте закрыть соединение:
3. Отправка почты
Для отправки почты используется протокол SMTP и модуль smtplib:
import smtplib, getpass
my_smtp = smtplib.SMTP(smtp.server.com’)
my_smtp.login(«myuser», getpass.getpass())
Как и раньше, для защищенного соединения используйте SMTP_SSL. Когда соединение будет установлено, можно отправить сообщение:
from_addr = ‘me@example.com’
to_addr = ‘you@example.com’
msg = ‘From: me@example.com\r\nTo: you@example.com\r\n\r\nHello, this is a test message’
my_smtp.sendmail(from_addr, to_addr, msg)
Работа с веб-страницами
Программирование на Python часто используется для написания различных скриптов для работы с веб.
1. Веб краулинг
Модуль urllib позволяет выполнять запросы к веб-страницам различными способами. Для отправки обычного запроса используется класс request. Например, выполним обычный запрос страницы:
import urllib.request
my_web = urllib.request.urlopen(‘https://www.google.com’)
print(my_web.read())
2. Использование метода POST
Если вам нужно отправить веб-форму, необходимо использовать не GET запрос, а POST:
import urllib.request
mydata = b’Your Data Goes Here’
my_req = urllib.request.Request(‘http://localhost’, data=mydata,method=’POST’)
my_form = urllib.request.urlopen(my_req)
print(my_form.status)
3. Создание веб-сервера
С помощью класса Socket вы можете принимать входящие подключения, а значит можете создать веб-сервер с минимальными возможностями:
import socket
host = »
port = 4242
my_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
my_server.bind((host, port))
my_server.listen(1)
Когда сервер создан. вы можете начать принимать соединения:
addr = my_server.accept()
print(‘Connected from host ‘, addr)
data = conn.recv(1024)
И не забудьте закрыть соединение:
Многопоточность
Как и большинство современных языков, Python позволяет запускать несколько параллельных потоков, которые могут быть полезными, если нужно выполнить сложные вычисления. В стандартной библиотеке есть модуль threading, который содержит класс Therad:
import threading
def print_message():
print(‘The message got printed from a different thread’)
my_thread = threading.Thread(target=print_message)
my_thread.start()
Если функция работает слишком долго, вы можете проверить все ли в порядке, с помощью функции is_alive(). Иногда вашим потокам нужно получать доступ к глобальным ресурсам. Для этого используются блокировки:
import threading
num = 1
my_lock = threading.Lock()
def my_func():
global num, my_lock
my_lock.acquire()
sum = num + 1
print(sum)
my_lock.release()
my_thread = threading.Thread(target=my_func)
my_thread.start()
Выводы
В этой статье мы рассмотрели основы программирования python. Теперь вы знаете большинство часто используемых функций и можете применять их в своих небольших программах. Вам понравиться программирование на Python 3, это очень легко! Если у вас остались вопросы, спрашивайте в комментариях!
На завершение статьи отличная лекция о Python: