Могу ли я запускать .desktop Launcher для Python2 и Python3 в зависимости от установленной версии?

sed -r -e '/^deb /!d' -e 's/^([^#]*).*/\1/' -e 's/deb http:\/\/ppa.launchpad.net\/(.+)\/ubuntu .*/ppa:\1/' -e "s/.*/sudo add-apt-repository '&'/" /etc/apt/sources.list /etc/apt/sources.list.d/*

Это не генерирует команды для включения возможных исходных репозиториев (deb-src).

1
задан 30 November 2012 в 15:09

1 ответ

Я бы сделал это в моем сценарии setup.py. Примерно так же (непроверенный):

import sys

template = """[Desktop Entry]
Version=1.0
(...)
Exec=python%s /path/app.py
"""

version = '' if sys.version_info.major == 2 else '3'
with open('myapp.desktop', 'w') as dfile:
    dfile.write(template % version)
0
ответ дан 25 May 2018 в 03:49
  • 1
    не правда ли, что в настоящее время setup.py всегда будет выполняться из Python2, даже если Python3 установлен? Это никогда не даст мне версию 3 из sys.version. – Takkat 30 November 2012 в 17:11
  • 2
    Если пользователь хочет, чтобы ваш модуль был установлен для Python 3, его необходимо установить через python3 setup.py install. В противном случае ваши файлы будут помещены в папку Python 2 и не будут доступны Python 3. – Timo 30 November 2012 в 18:06
  • 3
    Он будет установлен из DEB. Ручные установки никогда не являются проблемой;) – Takkat 30 November 2012 в 18:28
  • 4
    Хм, я думаю, вы могли бы использовать скрипт prerm для этого: wiki.ubuntu.com/PackagingGuide/Basic#postinst_and_prerm . Это просто скрипт bash, поэтому вы можете проверить, существует ли исполняемый файл python3 и основывать его на рабочем столе. – Timo 30 November 2012 в 20:41
  • 5
    Прости. Мой предыдущий комментарий должен был быть о postinst, а не prerm. Я больше не могу его редактировать. – Timo 30 November 2012 в 22:47

Другие вопросы по тегам:

Похожие вопросы: