После очень небольшого числа проблем я переместил свое приложение из 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 после того, как они установили мой сценарий)?
Я бы сделал это в моем 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)
Это звучит слишком очевидно для хорошего ответа, но ...
Почему вы не используете bash-скрипт в качестве бинарного файла своего приложения. Я имею в виду падение / usr / bin / bash-скрипта, который проверяет python3, а затем запускает настоящий скрипт.
Программа запуска просто указывает на скрипт bash.
Он даже будет работать из командной строки (так как только сценарий bash будет в PATH).