Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 27, 2016 13:27:34

alammer
Зарегистрирован: 2016-09-27
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск py-приложений на Linux

Здравствуйте! В Python полный ноль, но так сложилось, что попросили перекинуть приложение с Убунту ) на ARM-железку с Linux.
Под Убунту процесс установки расписан достаточно подробно, Линукс на ARM знает только собственно Python 2.7 и pip.
Я попытался погуглить, но 99% того, что я нашел относятся к синтаксису, принципам и т.п., а по прикладному применению ничего нормального не попалось.

У меня как у С/С++ программиста несколько вопросов:

1)В питон-проекте есть файл require.txt, который содержит перечень необходимых проекту библиотек или модулей (не знаю как назвать корректно), я после выполнения команды:

pip install -r require.txt

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

В С/С++ я так понял аналогом этого действия является установка различных библиотек, к которым обращается приложение. Но там библиотека это объект, который для корректного подключения должен быть скомпилирован под аналогичную архитектуру.

Правильно ли я понял, что для питон-приложений (при наличии установленного соственно python) такого понятия как кросс-компиляция или архитектура системы вообще не существует, т.к. python при компиляции приложения работает только с текстовыми файлами? И соотвественно все сторонние библиотеки/модули, которые предустанавливает команда:

pip install

также устанавливаются как текстовые файлы и являются архитектурно-независимымы?

2)В линуксе по умолчания бибилиотеки ставятся в одну из нескольких директорий типа /usr/lib и т.п. Правильно ли я понял, что pip install по умолчанию (если не сидеть под виртуальными переменными) размещает все в корневой директории питона?

3)Несколько раз встречал рекомендации работать с питоном через virtualenvwrapper. Я попытался посмотреть, что там происходит и получается, что дописывается несколько переменных окружения в Линукс плюс создается отдельная папка, куда копируются с сохранением внутренних путей все бинарники питона уже установленного в Линукс, копируются все скрипты изменененные так, чтобы обращаться к питону из этой папки и все необходимые сторонние модули устанавливаемые через pip install.
В виртуальных переменных и отдельной папке под них есть какая-то острая необходимость обусловленнаяя спецификой питона или это делается исключительно для удобства. И при прописывании всех путей руками в каком-нибудь .bashrc разницы приложение при запуске не почувствует?

Спасибо.

Офлайн

#2 Сен. 27, 2016 14:08:59

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Запуск py-приложений на Linux

1) если кратко то да. Отдельный случай когда библиотека имеет C расширение, тогда нужен установленный в систему компилятор (обычно gcc установлен) и в процессе установки все скомпилируется автоматически (при отсутствии ошибок разумеется, чаще всего это нехватка в системе .h файлов зависимых библиотек).

2)да, обычно это папка site-packages . Иногда немного в другие. В целом это не суть важно.

3) это делается чаще всего для “чистоты” разработки что бы создать окружение с нужным набором библиотек и их версий, отличных от системных. Т.е. это инструмент для разработки, распространяются Python программы и запускаются без вирт. окружений



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Сен. 27, 2016 15:37:01

alammer
Зарегистрирован: 2016-09-27
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск py-приложений на Linux

спасибо большое

а можно еще поподробнее, про бибилиотеки с С расширением? Или ссылку, где прочитать можно.

Под С расширением имеется ввиду тупо “имяфайла.с” или какие-то импорты/инклюды внутри чисто питоновского файла?

Автоматически скомпилируется - это после чего-нибудь типа “python myproject.py” питон, увидев такую бибилиотеку, автоматически задействует тот же gcc из PATH: Линукса?

Офлайн

#4 Сен. 27, 2016 15:51:09

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Запуск py-приложений на Linux

Вот документация.
Смысл такой - часть функционала можно написать не на питоне,а на C. Как внутри это выглядит не важно для конечного использования. Когда вы устанавливаете библиотеку с таким расширением через pip, он скачивает архив, в котором есть файл setup.py - вот в нем есть инструкции как устанавливать python файлы, в том числе есть инструкции о том что нужно скомпилировать С код. Скорее всего внутри компилируется в .so файл, который легко импортируется средствами самого питона. Поэтому работая с библиотекой вы работаете как с обычным python кодом.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version