- Сборка и установка Python 3 из исходников (Ubuntu, Debian).
- Загрузка исходников.
- Конфигурирование, сборка и установка.
- Установка основных зависимостей для сборки Python3:
- Установка всех зависимостей для полной сборки и установки Python3:
- Кросс-упаковка python кода в exe файл из Linux c помощью PyInstaller
- Подготовка
- Настройка и запуск
- Как скомпилировать python в файл .exe на Linux с pyinstaller?
- Быстрое и легкое создание приложений для Ubuntu на Python и GTK
- Подготовка
- Разработка
- Сборка и публикация
- Сборка программ и утилиты терминала Linux. Часть третья
- Сборка программ и утилиты терминала Linux. Часть третья
- Инструменты для сборки программ
- Система сборки Make
- Процесс работы make-команды
- Утилиты терминала Linux
- Применение математики
- Python-утилиты
- Различные полезности
Сборка и установка 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 для текущей сессии терминала:
После закрытия терминала созданные нами 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 -.
Источник
Быстрое и легкое создание приложений для 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:
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-репозитория
Источник