Сборка python приложения под linux

Сборка и установка Python 3 из исходников (Ubuntu, Debian).

Загрузка исходников.

  • переходим на страницу загрузки Python v.3 официального сайта языка программирования Python;
  • выбираем нужную Вам версию Python из столбика «Release version», жмем на ссылку.
  • открывшуюся страницу прокручиваем вниз и загружаем исходники Python — «Gzipped source tarball», которые будем компилировать.

Конфигурирование, сборка и установка.

Для основного интерпретатора CPython требуется только компилятор языка C, НО для некоторых модулей стандартной библиотеки Python (например, модуль сжатия zlib или модуль базы данных sqlite3 ) потребуются установить дополнительные системные библиотеки.

Установка основных зависимостей для сборки Python3:

Примечание: команда установки sudo apt install . записана в 3 строки, что бы уместить библиотеки на экране без горизонтальной прокрутки.Обратите внимание, что это только основные зависимости, для успешной сборки Python

Установка всех зависимостей для полной сборки и установки Python3:

Применительно к Debian, Ubuntu и других систем на базе установщика apt .

Во-первых, убедитесь, что в списке источников sources.list включены пакеты с исходными кодами. Это можно сделать, добавив строку с расположением scr пакетов, включая URL-адрес, имя дистрибутива и имя компонента в файл /etc/apt/sources.list .

Затем вы должны обновить индекс пакетов и установить зависимости сборки через команду apt :

Если этот пакет недоступен в вашей системе, то попробуйте уменьшить версию до тех пор, пока не найдете доступный пакет. Например:

Внимание! Если пакет для сборки, например Python3.8 недоступен в вашем дистрибутиве (а доступен только например Python3.6), то это не значит что версию Python3.8 нельзя установить в вашу систему. Просто некоторые модули стандартной библиотеки Python используют системную библиотеку версией выше и ее нет в вашем дистрибутиве. В итоге модуль использующий библиотеку, которой нет, просто не скомпилируется и не будет работать в итоговой сборке.

И так, имеем скачанный Python нужной версии, допустим это будет версия 3.x.x (x — цифры нужной версии ), в формате GZIP и с расширением .tgz . Распакуем архив с исходниками Python-3.x.x.tgz, при этом создастся папка Python-3.x.x, в которую затем перейдем.

Теперь нужно сконфигурировать установку командой ./configure . Определимся, куда мы будем ставить нужный нам Python и укажем этот директорий в конфигурации. Обычно не системные приложения в Linux ставятся в папку /opt , следовательно, будем ставить в директорию /opt/Python-3.x.x/ , где .x.x — обозначают версию Python.

  • Включение флага —enable-optimizations позволяет оптимизировать профилирование PGO — оптимизация профиля [лучшая подготовка, поддержка llvm и т.д.] и оптимизацию LTO — времени связи для GCC и CLANG. Оба являются дорогостоящими оптимизациями, которые замедляют процесс сборки, но дают значительное повышение скорости примерно на 10-20%.
  • Включение флага —with-lto использует возможность последних наборов инструментов компилятора для оптимизации через произвольную границу файла .o при создании окончательных исполняемых файлов или общих библиотек для дополнительного повышения производительности.
  • Для поддержки часового пояса по умолчанию, начиная с версии Python 3.9, при компиляции можно указать флаг —with-tzpath , который должен быть строкой, разделенной os.pathsep и указывать на данные о часовых поясах в системе.
  • Все флаги конфигурации можно посмотреть командой ./configure -help .

Далее скомпилируем Python и установим в директорию, указанную в конфигурации:

Команда make -c -j4 создаст CPython с выводом только предупреждений и ошибок в stderr и будет использовать до 2-x ядер ЦП. Если вы используете машину с более чем четырьмя ядрами или одноядерную машину, то измените число, переданное в флаг -j, в соответствии с количеством ядер, которые у вас есть

После удачной установки, для удобного вызова Python, добавим aliases для текущей сессии терминала:

Читайте также:  Что такое тестовый режим windows 10 pro build

После закрытия терминала созданные нами aliases удалятся. Что бы создать постоянные aliases, добавим их в файл Вашего профиля .basrc

И все же, при установке сторонних модулей и пакетов, мы все еще пользуемся привилегиями суперпользователя sudo , а это в системах Linux не приветствуется.

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

Источник

Кросс-упаковка python кода в exe файл из Linux c помощью PyInstaller

Рано или поздно перед Python программистом встает проблема распространения своего ПО на компьютерах без установленного интерпретатора Python. Наиболее рациональным способом при этом кажется упаковка кода в автономный бинарный файл. Для этого существует целый сомн фреймворков.

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

Подготовка

Нам понадобятся:

  • Python2 — К сожалению PyInstaller работает только для Python-2.x.x
  • Сам Pyinstaller

Pywin32 — дополнения Python для Windows. Опять же последняя стабильная версия (216)
Wine — ну без него тут никуда.

Я тестировал кросс-сборку на Ubuntu 11.04 с Python 2.7.1 и Wine 1.3.20.

Ставим все необходимое:

#Wine
sudo apt-get install wine1.3-dev
#Python
wget http://python.org/ftp/python/2.7.1/python-2.7.1.msi
wine msiexec /i python-2.7.1.msi

#Pyinstaller
wget http://www.pyinstaller.org/static/source/1.5/pyinstaller-1.5.tar.bz2
tar xvf pyinstaller-1.5.tar.bz2

#Pywin32
wget http://downloads.sourceforge.net/project/pywin32/pywin32/Build216/pywin32-216.win32-py2.7.exe?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpywin32%2Ffiles%2Fpywin32%2FBuild216%2F&ts=1305544745&use_mirror=citylan -o pywin32.exe
wine pywin32.exe

Настройка и запуск

Теперь необходимо настроить Pyinstaller с помощью скрипта Configure.py. Конфигурацию надо производить каждый раз когда меняется конфигурация Python, поэтому имеет смысл держать отдельную версию Pyinstaller для каждой версии Python. Сконфигурируем Pyinstaller под Windows-версию интерпретатора:

cd pyinstaller-1.5
wine

Теперь можно собирать exe-файл. Сначала создаем spec-файл, в котором содержаться настройки упаковки проекта. Для наглядности назовем упаковываемый файл test.py (в случае, когда в проекте не один файл, указываем путь к главному).

/.wine/drive_c/Python27.exe Makespec.py test.py

По умолчанию папка со spec-фалом будет создана в папке Pyinstaller и будет иметь имя упаковываемого файла без расширения (в нашем случае test).

К команде создания spec-файла можно добавить полезные ключи, например:

  • —onefile — по умолчанию PyInstaller создает exe-файл и кладет в папку рядом с ним необходимые dll. Этот ключ форсирует упаковку всего в единый бинарник.
  • —out=DIR — позволяет задать определенную папку для spec-файла
  • —windowed — под Windows отключает консоль приложения

И наконец финальный этап — построение:

/.wine/drive_c/Python27/python.exe Build.py test/test.spec

Упакованное приложение можно найти в папке dist/ внутри папки со spec-файлом.

За сим все. Тестовая программа заработала под Wine, а затем под Windows XP и Windows 7 без малейших писков.

Источник

Как скомпилировать python в файл .exe на Linux с pyinstaller?

Доброе время суток всем прогерам. Мне нужна помощь. Ситуация такая. Недавно начал изучать python. Если быть точнее, я сижу на Linux Mint 18 с установленными Python 2.7.12 и Python 3.5.2. Узнал такую тему, что файлы .py можно переиначивать в .exe (исполняемые файлы executable). Для этого установил себе pyinstaller. всё получается кроме одного. Вместо того, чтобы у меня получился файл блаблабла.exe у меня получается тупо файл без названия расширения, который никак не запустить. Наверное это файл ELF. Но как мне сделать настоящий EXEшник, работающий на винде?

Я использовал команду pyinstaller -F -w /путь к/файлу.py
В программе подключается tkinter

Как скомпилировать python 3.3.3 в exe? Как забустить cx-Freeze что бы получить exe?
Здравствуйте, всем. Помогите, пожалуйста: Как скомпилировать python 3.3.3 в exe? Как забустить.

Как скомпилировать с Python Kivy, в один exe?
Что только не пробывал, через PyInstaller не пошло, через cz_freeze тоже. Одна и та же проблема -.

Как скомпилировать несколько файлов Python в один exe?
Здравствуйте, я написал калькулятор, но как скампилировать main и ui в один exe не знаю помогите.

Сборка приложения Python в .EXE через PyInstaller 3.4 и запуск в Windows XP
День добрый! На машине Windows 10 x64 устанавливаю: — pycharm-community-2018.3.6 x32 -.

Читайте также:  Windows 10 как включить блокировку экрана по времени

Источник

Быстрое и легкое создание приложений для Ubuntu на Python и GTK

Речь в этом посте пойдет о утилите под название «Quickly». Эта утилита позволяет быстро создавать приложения для Ubuntu на Python. По моему мнению, утилита очень проста и эффективна. Но, к сожалению она не распространена и имеет очень небольшую документацию только на английском языке. Это меня натолкнуло на написание вводного курса по этой утилите. Итак, поехали.

Подготовка

Для начала надо установить саму утилиту. Заходим в терминал и вводим команду:

После этого нам надо создать папку где будут хранится все наши проекты.

Например пусть это будет:

После создания папки нам надо в неё перейти. В терминале вводим:

Теперь создаем само приложение. В терминале вводим:

и переходим в папку с только что созданным приложениям

Вместо foo пишите название вашего будущего приложения.
На этом подготовка закончена далее переходим к следующему этапу.

Разработка

Приступаем к основному этапу.

Итак, в утилите Quickly есть 3 основные команды:

— открывает текстовый редактор с основными файлами проекта для редактирования.

— Открывает редактор UI интерфейса.

Также есть дополнительные команды:

— Добавляет заголовок лицензии к каждому файлу вашего проекта.

Перед выполнением этой команды надо заполнить файл AUTHORS в папке с вашим проектом.

— Добавляет новый диалог к вашему проекту.
— Добавляет новое руководство.
— Добавляет новый топик к руководству проекта.

Эти команды составляют основную функциональность утилиты.
А теперь я вам хочу пояснить две очень важные вещи с которыми вы обязательно сталкнётесь.
1. Где подключать сигналы к функциям.
Делается это в файле Window.py в папке foo_lib. Вместо foo имя вашего приложения.
С помощью специально названых функций. Например:

button1 — это виджет.
clicked — это сигнал.
Аргументы функции лучше не изменять.

2. Как обращаться к виджетам из python кода.
Это делается с помощью функции:

Это основные моменты на которые стоит обратить внимание. Остальное зависит от вашего знания python.
А теперь я вам рекомендую посмотреть видео о создании простого приложения с помощью Quickly.

Теперь переходим к следующему этапу.

Сборка и публикация

Казалось бы, что это все что умеет утилита, но это не так.
Она к тому же умеет собрать Debian пакет и опубликовать проект на Launchpad или на Bazaar.
Для того что бы собрать Debian пакет, выполните следующею команду в терминале:

Пакет будет создан на уровень выше от папки с вашим проектом.
А для того что бы опубликовать ваш проект на Launchpad, выполните следующию команду:

И выполняйте инструкции которые указываются в окне терминала.
После первой публикации вы сможете выполнять команду:

Которая автоматически будет отправлять новые версии проекта на Launchpad.
На этом вводный курс по утилите Quickly закончен.

Источник

Сборка программ и утилиты терминала Linux. Часть третья

Сборка программ и утилиты терминала Linux. Часть третья

Мы уже рассказали об основных командах терминала Linux, а также инструментах для начинающих вроде tmux, GnuPG и Bash. В этой части рассмотрим сборку программ и утилиты терминала Linux.

Инструменты для сборки программ

Речь пойдёт про интерпретируемые программные платформы, доступные в большинстве систем — Python, Perl, awk, Bash. Кроме того, вам понадобится система сборки кода Make.

Код, который пишет программист, часто разделяется на файлы заголовков .h и файлы исходного кода .c.

При этом компилятор gcc делает следующее:

  • При компиляции -S исходный код преобразуется с .c в код сборки .s.
  • При компиляции -c код сборки трансформируется в объектный код .o.
  • Ссылка -l — это ссылка на стандартные библиотеки для создания исполняемого файла.

По умолчанию gcc объединяет вышеуказанные этапы, создавая исполняемый файл.

gcc hello.c — создает a.out, а не .o или .s-файлы.

Система сборки Make

Данная система автоматизирует компиляцию нескольких исходных файлов в сложном проекте, упорядочивает зависимые действия и выполняет их по порядку. После чего ею считывается конфигурация из файла «сборки», обычно именуемого Makefile. В итоге Makefile действует как программный компонент процесса сборки проекта.

Процесс работы make-команды

make будет считывать данные из Makefile и запускать команды, чтобы построить конечную цель. Например, в Makefile, показанном выше, make будет запускать команды для правил 2–4, за которыми последует правило 1:

Читайте также:  Windows network audio driver

gcc -c dep1.c # создать dep1.o
gcc -c dep2.c # создать dep2.o
gcc -c main.c # создать main.o

gcc -o an_exe main.o dep1.o dep2.o -lm

Утилиты терминала Linux

Чтобы запустить команду в определённое время, используйте at :

at 17:00
at> log_days_activities.sh # иногда можно сократить: at> prompt [Ctrl+D]

at предлагает использование ключевых слов, таких как now , noon , today , tomorrow (сейчас, полдень, сегодня, завтра), а также различные опции, например, часы и дни, которые можно указывать с символом + .

at noon
at now + 1 year
at 3:08pm + 1 day
at 15:01 December 19, 2018

Используйте cron , если вы хотите задать периодичность запуска команд.

FBS , Санкт-Петербург , По итогам собеседования

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

echo ’15 18 30 6 * find /home -mtime +30 -print’ > f00
crontab f00 # добавить предыдущую команду в систему crontab

crontab -l # список записей crontab
crontab -r # удалить записи crontab

Вывод команды cron будет осуществляться через почту (в качестве альтернативы она может быть перенаправлена в файл с помощью > ).

Анатомия записи в crontab :

В данном случае получаем следующее: выполнение команды find ежегодно 30 июня в 18:15.

Применение математики

  • Генерация случайных чисел с помощью shuf (может потребоваться установка):
    shuf -i 1-100 -n 1
  • Форматирование чисел с помощью numfmt :
    numfmt —to=si 1000
    1.0K
    numfmt —from=iec 1K
    1024
  • Использование bc в качестве универсального калькулятора:
    bc
    echo ‘obase = 16; ibase = 10; 56 ‘| bc # десятичное в шестнадцатеричное
    echo ‘scale=8; 60/7.02’ |bc # произвольная точность

Python-утилиты

  • Если вам нужно установить простой веб-сервер менее чем за минуту, то просто используйте:
    python3 -m http.server 35000
  • Если требуется распечатать файл json:
    python3 -m json.tool afile.json
  • Если требуется запустить небольшие программы на Python:
    python -c «import math; print (str (math.pi) [: 7])»
  • Если требуется применить математику:
    python -c «print(6*6+20)»
    python -c «fctrl=lambda x:0**x or x*fctrl(x-1);
    print(fctrl(6))» # вычислить факториал

Различные полезности

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

  • Чтобы выполнить команду в течение указанного времени с использованием тайм-аута:
    timeout 2 ping google.com
  • Отобразить изменяющуюся переменную:
    watch -n 5 free -m
  • Используйте yes для автоматического подтверждения операций:
    yes | pip install pkg —upgrade
    yes «this is a test» | head -50 > testfile.txt # позволяет создать файл с произвольным количеством строк
  • Создание PDF-файла из текста с помощью vim:
    vim states.txt -c «hardcopy> states.ps | q» &&
    ps2pdf states.ps # позволяет преобразовать .ps в .pdf
  • Запуск команды от имени другой группы Linux:
    sg grpgit -c ‘git push’
  • Отображение CSV-файла в формате столбца или таблицы:
    column -t -s , filename.csv
  • В случае, если возникли трудности с отправкой двоичных исполняемых файлов по электронной почте:
    xxd f.exe f.hex # hexdump exe, необходимо просто отправить его по e-mail
    xxd -r f.hex f.exe # конвертируем приёмник обратно в exe
  • Если требуется сгенерировать пароль:
    head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8
    openssl rand 8 -base64 | cut -c1-8 # -base64 8 для конкретной версии
  • Pandoc для конвертации файлов (md, tex, txt, html, docx, pdf, odt):
    pandoc manual.md -o manual.pdf
    pandoc example.txt -o example.html
    pandoc -s example.txt -o example.docx
  • Также можно анализировать и читать файлы XML с помощью xmllint .
  • Чтобы разделить большой файл на небольшие части (например, для отправки в виде вложения по почте):
    split -b 20M large.tgz parts_ # блоки по 20 МБ
    # отправить части__* по почте
    cat parts_a *> large.tgz # на принимающей стороне

Если вы пользуетесь не только Linux, но и Windows, посмотрите наше руководство по Windows PowerShell для начинающих.

Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации

Ксения Широкова
Перевод материала из GitHub-репозитория

Источник

Оцените статью