LINUX.ORG.RU

python3 в системе

 , два зла


0

1

Привет.

Есть Ubuntu 16.04. Хочется иметь возможность запускать python2 и python3 скрипты максимально прозрачно. Используются либы из pip2(pip3).

Для скриптов `#!/usr/bin/env python2` - все ок. Юзаются либы из pip2

Для скриптов `#!/usr/bin/env python3` - все ок, Юзаются либы из pip3

Для скпритов `#!/usr/bin/env python` с претензией на совместимость py2\py3 - тоже все ок, используются либы из pip2, и скрипт запускается в окружении python2

Как добиться, запустив очередной `source py_my_cool_env`, возможности запуска сприптов `#!/usr/bin/env python` в окружении python3 , с уже становленным (полу-)системными pip3 либами? Т.е., что бы не создавался новый корень для этого окружения, не ставить в него либы pip3 , ведь они уже установлены в системе.

Смотрел на pyenv, pyvenv - не понял, как это сделать, они все хотят свою директорию с установленным внутри своим python.

Deleted

Последнее исправление: Deleted (всего исправлений: 5)

alias python=python3 не помогает?

monk ★★★★★
()

https://docs.python.org/3/library/venv.html

Может быть ты ищешь это с флагом --system-site-packages? Если всё равно пытается поставить pip, попробуй добавить флаг --without-pip.

Я этим особо не занимался, так что прости, если что не так.

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

Либо пускать python3 script.py, со срачем в системный каталог site-packages, либо по человечески с использованием pyenv и отдельными каталогами для каждого проекта, он не копирует питон, а ссылки кидает на системный, т.ч. не заморачивайся особо.

В чем проблема пускать старые python скрипты как python scrupt.py, а новые как python3 script.py?

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

В чем проблема

Я хотел симметрии в системе.

Мне не кажется хорошей идеей разворачивать отдельный venv под скрипт, т.к. предполагается, что на этой тестовой системе будут тестироваться скрипты в системном окружении, а именно, в постевленном apt install-ом pip2/pip3,python2/3. И пока мне не достается простого способа сделать то, что я в сабже описал.

Но вообще, от людей близких к питону, рад бы послушать на счет скриптов '#!/usr/bin/env python' - это вообще законно? или плохой тон, а надо указывать версию?

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

'#!/usr/bin/env python' - это вообще законно? или плохой тон, а надо указывать версию?

Разумеется незаконно, так испокон веков писали легаси скрипты вообще про python3 ничего не знающие, а ты почему-то решил что они переносимы. python,python2 - это ТОЛЬКО второй питон. python3 - это только третий питон.

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

ты почему-то решил что они переносимы

потому что так и есть, специально писали. И ставили именно 'python' т.е. они подходят и под 2 и под 3. Так и запускаются. Скоро python будет обозначать 3ю версию; в федоре это уже так, наверно.

python,python2 - это ТОЛЬКО второй питон. python3 - это только третий

я не могу найти такое определение

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

нет, это твоя фантазия

https://www.python.org/dev/peps/pep-0394/#recommendation

Единственная фантазия тут заключается в том, что реальный мир соответствует какой-то писульке. Во-первых, она появилась только через 3 года после выхода python3, и никаким магическим способом не исправила всё что было написано до неё, в том числе в эпоху второго питона-онли. Во-вторых, глупо полагать что все, и даже большинство, разработчиков её читали и ей следуют даже в новом коде. Поэтому повторяю: по факту, python2 и python3 - чётко определяют требуемую версию питона и не допускают разночтений, и должны использоваться. Просто python не говорит о совместимости с python3 НИЧЕГО, значит не может считаться совместимым, и использоваться не должен.

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

Да, кстати, я уже видел python3-only код с #!/usr/bin/env python. А чо, ведь он в дистре автора по умолчанию.

Я вполне ясно выразился. Код сознательно написан универсальный. `python` - там написано не случайно. И это оговорено в питоновской документации. Не надо ничего фантазировать.

Вопрос лишь в удобстве переключения системного окружения. О котором я не знал, и которого в убунте из коробки нет.

Поэтому, остановился на pyenv, как на самом понятном и прозрачном для меня варианте.

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

с отсылками к зоновской тематике

э.. например?

«два стула» чтоли?

MyTrooName ★★★★★
()
Последнее исправление: MyTrooName (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.