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

После очень небольшого числа проблем я переместил свое приложение из Python2 в Python3, убедившись, что оно по-прежнему будет работать с Python 2.7, и, следовательно, python> = 2.7 только как зависимость.

Это было сделано главным образом потому, что Python3 и некоторые зависимости не установлены в 12.04 LTS по умолчанию, и я не хочу, чтобы мои пользователи устанавливали все Python3 только для запуска моего скрипта.

Когда я создаю панель запуска appname.desktop, мне нужно решить, запускает ли она мое приложение с использованием Python2 или Python3, как

EXEC=python /path/app.py
EXEC=python3 /path/app.py

. Но я бы хотел, чтобы это было

[ 113]
  • Запустите приложение с интерпретатором Python3, если установлен Python3.
  • В противном случае используйте Python2, если Python3 не установлен.
    1. Как это можно сделать? Нужно ли указывать это в сценарии установки моего пакета или у меня может быть средство запуска, которое может обрабатывать оба варианта (в случае, если люди устанавливают Python3 после того, как они установили мой сценарий)?

    4
    задан 30 November 2012 в 13:09

    2 ответа

    Я бы сделал это в моем 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
    ответ дан 30 November 2012 в 13:09

    Это звучит слишком очевидно для хорошего ответа, но ...

    Почему вы не используете bash-скрипт в качестве бинарного файла своего приложения. Я имею в виду падение / usr / bin / bash-скрипта, который проверяет python3, а затем запускает настоящий скрипт.

    Программа запуска просто указывает на скрипт bash.

    Он даже будет работать из командной строки (так как только сценарий bash будет в PATH).

    0
    ответ дан 30 November 2012 в 13:09

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

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