Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сборка проекта в один исполняемый файл на Linux 
:(
    Опции темы
Vady85
Дата 17.5.2015, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.12.2014

Репутация: нет
Всего: нет



Задача такова.
Так как на разных сборках линукса имеются различные версии питона и его библиотеки, то в разных сборках линукса (у кого вместо требуемого python 2.7 стоит 2.6, у кого вместо требуемого Qt 4.8.2 стоит 4.7.8), а у кого и модулей не хватает. Стоит вопрос: как собрать проект со всеми библиотеками в один файл/одну папку, чтобы обеспечить независимость от того, что установлено на клиентских компьютерах? т.е. чтобы отказаться от использования команды для запуска python project.py и избавиться от необходимости доустановки дополнительных модулей/обновления отдельных пакетов.
Проще говоря, как собрать standalone-приложение, написанное на python, для любых сборок линукса?

Это сообщение отредактировал(а) Vady85 - 17.5.2015, 01:35
PM MAIL   Вверх
Fenrir13
Дата 17.5.2015, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.9.2008

Репутация: 1
Всего: 2



Для начала собрать "проект" в полноценный пакет и опубликовать его каким-нибудь образом (их несколько).

https://the-hitchhikers-guide-to-packaging.readthedocs.org/ - неплохой, но староватый туториал по вопросу сборки питоньих пакетов
https://packaging.python.org/ - гайд поновее и покороче

Если установка получившегося питоньего пакета всё равно будет слишком сложной для ваших клиентов, тогда придётся заморочиться следующим шагом - сборкой пакетов для поддерживаемых вами линуксов. Тут я уже ничего подсказать не могу, не разбираюсь. И линуксов много, и систем установок у них используется много.
PM MAIL Jabber   Вверх
Vady85
Дата 26.5.2015, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.12.2014

Репутация: нет
Всего: нет



Fenrir13, спасибо за ответ, проблему решил так:
http://it-zdrav.velizh.ru/viewtopic.php?p=1842#p1842
И с остальными библиотеками, необходимыми для работы программы тоже разобрался. Но это работает в Ubuntu 14.04, для которого python27 - родной. В других ОС с более старыми библиотеками, как АльтЛинукс СПТ 6.0 - python26 является родным.
Осталась одна проблема: при запуске питона27, который поставляю в комплекте вместе с программой, ругается на ошибку из-за более старой библиотеки /lib64/libc.so. Копирование этой библиотеки с более новой версией в папку с программой не помогло. Как питону объяснить, где ему следует искать системную библиотеку?
Повторю: этот python по-прежнему должен быть portable, т.е. должен корректно запускаться из любого места.

Это сообщение отредактировал(а) Vady85 - 29.5.2015, 23:51
PM MAIL   Вверх
Romikgy
Дата 26.5.2015, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



что в файле activate ? и deactivate?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Vady85
Дата 26.5.2015, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.12.2014

Репутация: нет
Всего: нет



Romikgy, а зачем activate и deactivate? Пользователям каждый раз после включения компьютера перед запуском программы запустить activate?
PM MAIL   Вверх
Romikgy
Дата 26.5.2015, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Vady85, вы ссылку дали... вы ее читали ? делали как там написано?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Vady85
Дата 26.5.2015, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.12.2014

Репутация: нет
Всего: нет



Цитата
Vady85, вы ссылку дали... вы ее читали ? делали как там написано?

Я и есть автор поста на ссылке)))
Не знаю зачем, на всякий выложу содержимое activate:
Код

# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly

deactivate () {
    unset pydoc

    # reset old environment variables
    if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
        PATH="$_OLD_VIRTUAL_PATH"
        export PATH
        unset _OLD_VIRTUAL_PATH
    fi
    if [ -n "$_OLD_VIRTUAL_PYTHONHOME" ] ; then
        PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
        export PYTHONHOME
        unset _OLD_VIRTUAL_PYTHONHOME
    fi

    # This should detect bash and zsh, which have a hash command that must
    # be called to get it to forget past commands.  Without forgetting
    # past commands the $PATH changes we made may not be respected
    if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
        hash -r 2>/dev/null
    fi

    if [ -n "$_OLD_VIRTUAL_PS1" ] ; then
        PS1="$_OLD_VIRTUAL_PS1"
        export PS1
        unset _OLD_VIRTUAL_PS1
    fi

    unset VIRTUAL_ENV
    if [ ! "$1" = "nondestructive" ] ; then
    # Self destruct!
        unset -f deactivate
    fi
}

# unset irrelevant variables
deactivate nondestructive

VIRTUAL_ENV="/home/vady/Desktop/kpssvs/CMCO"
export VIRTUAL_ENV

_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH

# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if [ -n "$PYTHONHOME" ] ; then
    _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
    unset PYTHONHOME
fi

if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
    _OLD_VIRTUAL_PS1="$PS1"
    if [ "x" != x ] ; then
        PS1="$PS1"
    else
    if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
    else
        PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
    fi
    fi
    export PS1
fi

alias pydoc="python -m pydoc"

# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands.  Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
    hash -r 2>/dev/null
fi


PM MAIL   Вверх
Romikgy
Дата 26.5.2015, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Vady85 @  26.5.2015,  18:07 Найти цитируемый пост)
PATH="$VIRTUAL_ENV/bin:$PATH"

с запуском же PATH разобрались, найдите что то по аналогии LIBPATH ...
Цитата(Vady85 @  26.5.2015,  18:07 Найти цитируемый пост)
Я и есть автор поста на ссылке)))

наше вам с кисточкой !


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Vady85
Дата 27.5.2015, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.12.2014

Репутация: нет
Всего: нет



Цитата(Romikgy @  26.5.2015,  21:03 Найти цитируемый пост)
с запуском же PATH разобрались, найдите что то по аналогии LIBPATH ...

Не догоняю Вашу мысль. Можно поподробнее?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.