LINUX.ORG.RU

[py] build и install или без build и install просто


0

0

Поясните, пожалуйста, вот есть программы, которые устанавливаются подобным способом

$ python setup.py build
$ sudo python setup.py install
(ну или собираются в пакет, кому как удобнее), но так же находил билды, где делается просто:
python setup.py install --root=$pkgdir

Как все таки правильно и в обще, python setup.py build , что он делает, в каких случаях необходим?

★★★★★

python setup.py build

создает pyc файлы, которые затем устанавливаются в систему с помощью

sudo python setup.py install

во втором случае pyc файлы не создаются, и это может сказаться на скорсоти запуска приложений

HighwayStar ★★★★★
()
Ответ на: комментарий от HighwayStar

Ты уверен?

Из моего опыта install делает build если это нужно и pyc-файлы сами собираются на последнем этапе.

Я проверил на greenlet, pyc-файлы именно install делает а не build:

# python3 ./setup.py install
...
byte-compiling build/bdist.linux-x86_64/egg/greenlet.py to greenlet.pyc
...

Тока там не distutils а distribute стоит, но, думаю один хрен.

true_admin ★★★★★
()

build собирает пакет, если он не чисто питоновский (например, написан на си/++). install помещает все компоненты в нужные директории. Соответственно, если модуль полностью питоновский, то достаточно install. Как правильно должно быть написано в README к пакету.

mikki
()
Ответ на: комментарий от mikki

В принципе, distutuls работает как make, т.е. должен правильно обработать зависимости для install

mikki
()

Если делать просто

sudo python setup.py install

То во время билда будут созданы файлы с рутовым владельцем. Что, очевидно, совсем некомильфо.

baverman ★★★
()
Ответ на: комментарий от mikki

build собирает пакет, если он не чисто питоновский
Соответственно, если модуль полностью питоновский, то достаточно install

Чушь. install зависит от build.

baverman ★★★
()
Ответ на: комментарий от baverman

В чём не комильфо? Когда девелопишь то да, а когда готовый пакет ставишь то он ставится по сценарию tar -xf Library-1.0.tgz && cd Library-1.0 && ./setup.py install && cd .. && rm -rf ./Library-1.0*

Это с пакетным менеджером хорошо иметь песочницу чтобы вредный пакет не грохнул что-нить в системе, а когда речь идёт о setup.py в котором может быть что угодно разницы особой нет.

true_admin ★★★★★
()

Что ж, спасибо за ответы, не ожидал, что здесь нет однозначного ответа, но как понял походу просто лучше читать README и build тоже не помешает в начале, вернее, если его делать ничего плохого не произойдет

NK ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.