Ответ 1
Вы можете найти, как spyder-ide реализовал эту функциональность в своем setup.py script в строке 77, здесь код:
def get_data_files():
"""Return data_files in a platform dependent manner"""
if sys.platform.startswith('linux'):
if PY3:
data_files = [('share/applications', ['scripts/spyder3.desktop']),
('share/pixmaps', ['img_src/spyder3.png'])]
else:
data_files = [('share/applications', ['scripts/spyder.desktop']),
('share/pixmaps', ['img_src/spyder.png'])]
elif os.name == 'nt':
data_files = [('scripts', ['img_src/spyder.ico',
'img_src/spyder_reset.ico'])]
else:
data_files = []
return data_files
то он вызывается в регулярной data_files
настройке экземпляра setup()
.
Что он делает, так это проинструктировать установщика скопировать необходимые файлы, чтобы сделать пункт меню в их соответствующих папках. [0]
В системах linux вам необходимо создать файл appName.desktop
, обычно эти файлы находятся в /usr/share/applications
или /usr/local/share/applications
для приложений, установленных в системном масштабе, или ~/.local/share/applications
для пользовательских приложений [1].
Структура файла выглядит так (без объяснения причин, ссылка на большее количество ключей находится в ссылке выше):
[Desktop Entry]
Version=1.0
Terminal=false
Type=Application
Name=AppName
Exec=/path/to/executable
Icon=/path/to/icon
Categories=Graphics;2DGraphics;Development;
Comment=Tooltip comment appears when you hover on menu icon.
Вы можете поместить значок своего приложения в любом месте и использовать его полный путь или просто разместить под share/pixmaps/
и ссылаться на него только по имени файла.
Обратите внимание, что script не использует полные пути при указании местоположений для файлов .desktop и значков, которые должны быть установлены, потому что местоположения будут относиться к текущему sys.exec_prefix
, который по умолчанию равен /usr/local/
[2]
В окнах вам нужно создать .lnk
(двоичный файл) в каталоге ~\Windows\Start Menu\Programs
, я не буду подробно объяснять, как это работает (а не программист Windows), поскольку они написали полный пост- установка script, которая касается создания ярлыков меню для окон [3].
Небольшое пояснение для окон после установки script:
Похоже, что механизм, который реализует его выполнение, был удален из файла spyder-ide setup.py
, поэтому все, кого вы копаете, чтобы найти, как он работает, вы не сможете узнать, если вы не проверите историю файлов, поэтому очистите путаницу, вот что вы можете сделать, чтобы заставить ее выполнить (а не путь spyder-ide):
- Создайте пользовательскую команду
PostInstallCommand
и проинструктируйтеsetup()
выполнить ее, добавив ее в атрибутcmdclass
, например,cmdclass={'install': PostInstallCommand}
check этот ответ для получения подробных инструкций
Не забудьте проверить ОС перед добавлением PostInstallCommand
к вашему атрибуту cmdclass
, вы не захотите его выполнять в своих linux envs.
Надеюсь, это поможет!