LINUX.ORG.RU

Игры с PYTHON_SINGLE_TARGET и PYTHON_TARGETS

 ,


0

1

Привет

Как правильно выставлять PYTHON_SINGLE_TARGET и PYTHON_TARGETS ? Мне всегда казалось что через eselect python list. Но не получается.

Куда копать?

$ emerge -av1 --nodeps gvim 

 * IMPORTANT: 1 news items need reading for repository 'gentoo'.
 * Use eselect news read to view new items.


These are the packages that would be merged, in order:



!!! Problem resolving dependencies for app-editors/gvim

!!! The ebuild selected to satisfy "gvim" has unmet requirements.
- app-editors/gvim-8.0.1298::gentoo USE="acl gtk nls perl python session (-aqua) -cscope -debug -gnome -gtk3 -lua -luajit -motif -neXt -netbeans -racket -ruby (-selinux) -tcl" PYTHON_SINGLE_TARGET="python3_5 -python2_7 -python3_4 -python3_6" PYTHON_TARGETS="python2_7 -python3_4 -python3_5 -python3_6"

  The following REQUIRED_USE flag constraints are unsatisfied:
    python? ( python_single_target_python3_5? ( python_targets_python3_5 ) )

  The above constraints are a subset of the following complete expression:
    luajit? ( lua ) python? ( exactly-one-of ( python_single_target_python2_7 python_single_target_python3_4 python_single_target_python3_5 python_single_target_python3_6 ) python_single_target_python2_7? ( python_targets_python2_7 ) python_single_target_python3_4? ( python_targets_python3_4 ) python_single_target_python3_5? ( python_targets_python3_5 ) python_single_target_python3_6? ( python_targets_python3_6 ) )

$ eselect python list
Available Python interpreters, in order of preference:
  [1]   python3.6
  [2]   python2.7
  [3]   python3.5
  [4]   python3.4
$ eselect python set 1
$ eselect python list
Available Python interpreters, in order of preference:
  [1]   python3.6
  [2]   python2.7
  [3]   python3.5
  [4]   python3.4

★★★★★

Мне всегда казалось что через eselect python list.

Неправильно казалось. eselect python list ставит(точнее раньше ставил, теперь всё поменялось) предпочитаемую по умолчанию реализацию Python. PYTHON_TARGETS - ставит те версии, с которыми ты хочешь чтобы пакет работал в принципе(и которые потом можно переключать через eselect python list).

PYTHON_TARGETS по факту под капотом - это USE-флаги(USE expand, если быть точным), ставить их надо там же, где и другие USE-флаги - либо в make.conf, либо в package.use

с PYTHON_SINGLE_TARGET - ситуация аналогична

Pinkbyte ★★★★★ ()

правильно подсказывают. Как обычные use-флаги:

-python_targets_python3_4 python_single_target_python2_7

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

То есть PYTHON_TARGETS и PYTHON_SINGLE_TARGET сейчас выставляется только из make.conf, так?

Что сейчас делает eselect python list?

Еще вопрос: почему бы в PYTHON_TARGETS не завести все установленные версии? В чем минусы?

Kroz ★★★★★ ()
Последнее исправление: Kroz (всего исправлений: 2)

У тебя сейчас python single target выставлен 2.7, а python targets выставлен только 3.5, вот и конфликт

Выставляется в make.conf, package.use или package.env

Вообще ты уже похоже что-то где-то подкрутил, вот у тебя и проблема. С дефолтными значениями всё должно прекрасно работать.

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

Вообще ты уже похоже что-то где-то подкрутил, вот у тебя и проблема.

Ты оказался прав!
По'grep'ал конфиги - нашёл конкретно для gvim.
Правда немного странно что python3_6 всё равно не включает в PYTHON_TARGETS. Ну да ладно, мне не принципиально.

Тогда остается вопрос: зачем сейчас нужен eselect python list ?

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

почему бы в PYTHON_TARGETS не завести все установленные версии? В чем минусы?

Пакет собирается(точнее ставится) под каждую версию python, указанную в PYTHON_TARGETS. Сейчас в PYTHON_TARGETS по умолчанию 2 версии(2.7 и стабильный из 3.*), следовательно каждый пакет устанавливается дважды. Если у тебя есть желание хранить лишние версии пакета под каждую версию Python - на здоровье.

Что сейчас делает eselect python list?

https://wiki.gentoo.org/wiki/Project:Python/python-exec#eselect-python

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)

echo «=app-editors/gvim-8.0.1298 python_single_target_python3_5» >>blablabla package.use тред

тред нечитал иди в вику

deity ★★★ ()
Последнее исправление: deity (всего исправлений: 1)
Ответ на: комментарий от ponch

нет

PYTHON_SINGLE_TARGET: python2_7
и
PYTHON_TARGETS: -python3_4

Deleted ()

я недавно так нашаманил PYTHON_TARGETS и PYTHON_SINGLE_TARGET, что у меня почти для всех пакетов кроме нескольких ставится лишь одна реализация питона.

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

я не знаю, кто как делает, но проще поставить PYTHON_TARGETS="python2_7 python3_x", где x - текущая стабильная минорная версия третьего питона. и не париться с тем, что некоторые пакеты не поддерживают одну из этих версий, будет установленя та версия, которую поддерживают

eternal_sorrow ★★★★★ ()
Последнее исправление: eternal_sorrow (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

с самой первой установки Дженты так сделал, ну, месяца чрез три.

cat /etc/portage/make.conf
USE_PYTHON="3.6"
PYTHON_TARGETS="python3_6"
PYTHON_SINGLE_TARGET="python3_6
и для конкретного пакета
cat /etc/portage/package.use/deluge
net-p2p/deluge PYTHON_TARGETS: python2_7                                                                      
net-libs/libtorrent-rasterbar PYTHON_TARGETS: -python3_6 python2_7

Deleted ()
Последнее исправление: Lifun (всего исправлений: 2)
Ответ на: комментарий от Deleted

PYTHON_TARGETS: python2_7

так можно? а я всегда в pacage.use пишу python_targets_python2_7

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

как выяснилось, именно такая запись является расововерной

Deleted ()
[1]   python3.6
[2]   python2.7
[3]   python3.5
[4]   python3.4

Это же на 30 гигабайт говна. Не проще ли в системе держать одну версию? Иначе какой смысл в гибко настраиваемом дистрибутиве.

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

А я себе package.env для этих целей запилил. Если бы не Blender — Python 3.5 можно было бы сносить.

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

package.env, тож так сначала делал, но потом перешёл на правильную запись

Python 3.5 можно было бы сносить

если пакет поддерживает Python 3.5, то в 99% поддерживает Python 3.6, поэтому правлю ебилд и закидываю в свой оверлей. Пример, mpv

Deleted ()
Последнее исправление: Lifun (всего исправлений: 1)
Ответ на: комментарий от Deleted

Странно, у меня mpv на 3.5 не завязан. Но я пользуюсь 9999.

UPD: раньше я про такую запись не знал, спасибо. А почему именно такая — сама правильная?

beresk_let ★★★★★ ()
Последнее исправление: beresk_let (всего исправлений: 1)
Ответ на: комментарий от beresk_let

А почему именно такая — сама правильная?

наверное, потому, что так сказал разработчик Дженты и EAPI'ев

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

Окей, попрошу прямым текстом: тебя не затруднит дать ссылку на пруф? Не из подозрений, что ты говоришь неправду, а из интереса почитать первоисточник.

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

тебя не затруднит дать ссылку на пруф?

это сообщение было на основном форуме Дженты. как искать там, наверное, сам знаешь.

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

у меня mpv на 3.5 не завязан. Но я пользуюсь 9999.

значит, какое-то время назад поправили

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