Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Куда и как установить python-приложение в linux  (Прочитано 5000 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kmk

  • Автор темы
  • Активист
  • *
  • Сообщений: 700
    • Просмотр профиля
Захотел установить программу PAGE, с помощью которой можно легко и быстро генерировать оконный интерфейс пайтон-программ для библиотеки Tkinter.

(Нажмите, чтобы показать/скрыть)

Программа написана на Python. Скачивается, распаковывается в любое место и запускается:
$ cd /tmp
$ tar zxvf page-8.1.tgz
$ python3 '/tmp/page/page.py'

Вопрос в следующем. Хочу не просто скопировать в домашнюю папку и запускать при надобности из нее, а установить программу. Типа как устанавливает pip, например.

Сюда помещает либо симлинк, либо сценарий python:
~/.local/bin/Основная папка с программой находится здесь:
~/.local/lib/python3.11/site-packages/ProgramName/
Как это правильно сделать, и стоит ли делать вообще?

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

Естественно, гуглил, но толком ответа нет.

Пользователь добавил сообщение 01 Октября 2025, 15:39:46:
Решил попробовать скопировать программу в стандартные папки.

Перед этим посмотрел куда установлен gresistor3, установленный через pip:
(Нажмите, чтобы показать/скрыть)

Копирую все по своим местам:
sudo cp /tmp/page/images/page48.png /usr/local/share/icons/
sudo cp -r /tmp/page/ /usr/local/lib/python3.11/dist-packages/

Сценарий python, наподобие как выше, писать не умею.
Симлинк делать бесполезно, т.к. нужно не просто ткнуть по .py файлу, а запустить его в python3.
А вот desktop-файл можно сделать легко, и прописать там что угодно.
Но хорошо бы, чтобы можно было запускать его и из консоли тоже.

Остается создать скрипт запуска:
sudo touch /usr/local/bin/page
sudo chmod +x /usr/local/bin/page
sudo nano /usr/local/bin/page

Следующего содержания:
#!/bin/bash
/usr/bin/python3 /usr/local/lib/python3.11/dist-packages/page/page.py

Запускаем page из консоли:
$ pageИ вуаля, всё работает!

Осталось создать desktop-файл в:
/usr/share/applications/
или в
/usr/local/share/applications/

sudo touch /usr/local/share/applications/page.desktop
sudo nano /usr/local/share/applications/page.desktop

Следующего содержания:

[Desktop Entry]
Categories=Development;
Comment=GUI generator for Python and Tkinter
Icon=page48.png
Exec=page
Name=Page
NoDisplay=false
Terminal=false
Type=Application

И в результате, всё замечательно работает!

Более чем уверен, что всё сделал неправильно. В папке много лишнего. Но по большому счету, это почти то же самое, если бы просто скопировал в домашнюю папку. Пусть пока будет так, а позже, знающие люди подскажут, что я сделал не так.
« Последнее редактирование: 01 Октября 2025, 15:39:46 от kmk »

Оффлайн F12

  • Администратор
  • Старожил
  • *
  • Сообщений: 6009
    • Просмотр профиля
Re: Куда и как установить python-приложение в linux
« Ответ #1 : 01 Октября 2025, 15:51:19 »
kmk, тогда уже не ~/.local/lib, а  ~/.local/opt

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8239
    • Просмотр профиля
Re: Куда и как установить python-приложение в linux
« Ответ #2 : 01 Октября 2025, 15:54:11 »
Совершенствовать можно бесконечно. Самое банальное.
#!/bin/bash
/usr/bin/python3 ...
Зачем в шабанге баш? Пиши туда питон и запускай без указания интерпретатора.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7974
  • Eternally
    • Просмотр профиля
Re: Куда и как установить python-приложение в linux
« Ответ #3 : 01 Октября 2025, 15:56:12 »
Можно и без промежуточного скрипта:
[Desktop Entry]
Categories=Development;
Comment=GUI generator for Python and Tkinter
Icon=page48.png
Exec=/usr/bin/python3 /usr/local/lib/python3.11/dist-packages/page/page.py
Name=Page
NoDisplay=false
Terminal=false
Type=Application
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн kmk

  • Автор темы
  • Активист
  • *
  • Сообщений: 700
    • Просмотр профиля
Re: Куда и как установить python-приложение в linux
« Ответ #4 : 01 Октября 2025, 18:07:18 »
Exec=/usr/bin/python3 /usr/local/lib/python3.11/dist-packages/page/page.py
Да, можно. Но раз сделал скрипт, то прописал в desktop-файле его.

тогда уже не ~/.local/lib, а  ~/.local/opt
Я посмотрел, куда по умолчанию пишутся файлы. И сделал по аналогии. А папки ~/.local/opt даже нет.

Зачем в шабанге баш? Пиши туда питон и запускай без указания интерпретатора.
Можно поподробнее?

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8239
    • Просмотр профиля
Re: Куда и как установить python-приложение в linux
« Ответ #5 : 01 Октября 2025, 18:24:16 »
#!/bin/bash - шабанг, система запустит скрипт указанным здесь интерпретатором.
/usr/local/lib/python3.11/dist-packages/page/page.py. В page.py впиши шабанг, указывающий на питон: #!/usr/bin/python3. Теперь на него можно будет создать симлинк.
Помести page.py по стандартному пути, можно будет запускать без указания пути.
Для примера, загляни в gnome-terminal, это питон-скрипт. Рядом gnome-terminal.wrapper, это перл-скрипт.

Оффлайн F12

  • Администратор
  • Старожил
  • *
  • Сообщений: 6009
    • Просмотр профиля
Re: Куда и как установить python-приложение в linux
« Ответ #6 : 01 Октября 2025, 18:55:12 »
тогда уже не ~/.local/lib, а  ~/.local/opt
Я посмотрел, куда по умолчанию пишутся файлы. И сделал по аналогии.
- если речь о прикладном ПО, то согласно FHS (Filesystem Hierarchy Standard) /opt зарезервирован для установки пакетов дополнительного прикладного программного обеспечения

Пользователь добавил сообщение 01 Октября 2025, 19:01:16:
  ... или всё же речь о  общей библиотеке, тогда да, ей самое место в ~/.local/lib/, или даже в  /lib/
« Последнее редактирование: 01 Октября 2025, 19:01:16 от F12 »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8239
    • Просмотр профиля
Re: Куда и как установить python-приложение в linux
« Ответ #7 : 02 Октября 2025, 04:11:53 »
Забавная штука, игра в прятки.

Но раз сделал скрипт, то...
...к скриптам его. Например, в ~/.local/share/nautilus/scripts. В меню Наутилуса появится пункт 'Scripts', откуда его можно запустить. И десктоп-файл не нужен.
Хотя, в pcmanfm подобное реализуется с применением десктоп-файлов.
« Последнее редактирование: 02 Октября 2025, 04:46:37 от andytux »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7974
  • Eternally
    • Просмотр профиля
Re: Куда и как установить python-приложение в linux
« Ответ #8 : 02 Октября 2025, 04:25:19 »
Но раз сделал скрипт
И без него всё будет работать.

по-феншую F12 уже вам подсказал - в /opt. Не захламляйте систему.
Нужен запуск из терминала - просто cоздайте alias. Про .desktop я уже сказал.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн kmk

  • Автор темы
  • Активист
  • *
  • Сообщений: 700
    • Просмотр профиля
Re: Куда и как установить python-приложение в linux
« Ответ #9 : 02 Октября 2025, 12:00:48 »
В page.py впиши шабанг, указывающий на питон: #!/usr/bin/python3. Теперь на него можно будет создать симлинк.
Да, оригинальный page.py без #!/usr/bin/python3. Спасибо.

Для примера, загляни в gnome-terminal, это питон-скрипт. Рядом gnome-terminal.wrapper, это перл-скрипт.
У меня Mate, и соответственно там mate-terminal. Это исполняемый файл:
~$ whereis mate-terminal
mate-terminal: /usr/bin/mate-terminal /usr/share/man/man1/mate-terminal.1.gz
~$ ls -HalF /usr/bin/mate-terminal
-rwxr-xr-x 1 root root 368464 апр 25  2023 /usr/bin/mate-terminal*
~$ file /usr/bin/mate-terminal
/usr/bin/mate-terminal: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=06b73d630649282c1027fae9297d0a3a5372cc94, for GNU/Linux 3.2.0, stripped

...к скриптам его. Например, в ~/.local/share/nautilus/scripts. В меню Наутилуса появится пункт 'Scripts', откуда его можно запустить. И десктоп-файл не нужен.
Скриптами в файловом менеджере не пользуюсь совсем. Раньше ставил кучу, и не пользовался, теперь и не ставлю вовсе. (В Mate форк Nautilus'a - Caja.)

если речь о прикладном ПО, то согласно FHS (Filesystem Hierarchy Standard) /opt зарезервирован для установки пакетов дополнительного прикладного программного обеспечения
Спасибо за полезную информацию. Буду знать.

по-феншую F12 уже вам подсказал - в /opt. Не захламляйте систему.
Нужен запуск из терминала - просто cоздайте alias. Про .desktop я уже сказал.
В следующий раз буду ложить в opt.
Да разве это захламление, если знаешь что куда положил, удалить пару секунд:
sudo rm -r /usr/local/lib/python3.11/dist-packages/page/ && sudo rm /usr/local/share/icons/page48.png /usr/local/share/applications/page.desktop /usr/local/bin/page

А по поводу алиасов, как-то я забыл совсем. Это идея. Спасибо.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8239
    • Просмотр профиля
Re: Куда и как установить python-приложение в linux
« Ответ #10 : 02 Октября 2025, 12:49:19 »
У меня Mate, и соответственно там mate-terminal...
... рядом mate-terminal.wrapper, перл-скрипт. И x-terminal-emulator, симлинк, указывающий на этот перл-скрипт.

А по поводу алиасов, как-то я забыл совсем.
Так же забудешь, что за алиас ты создал.
« Последнее редактирование: 02 Октября 2025, 12:56:43 от andytux »

Оффлайн Skif_off

  • Активист
  • *
  • Сообщений: 573
    • Просмотр профиля
Re: Куда и как установить python-приложение в linux
« Ответ #11 : 02 Октября 2025, 22:10:23 »
А какой смысл лезть в /usr или /opt, если пользователь один и нет необходимости запускать приложение с привилегиями root'а?
Закинуть в тот же ~/.local/lib, симлинк или скрипт для запуска в ~/.local/bin, desktop-файл в ~/.local/share/applications, значки из "page-icons" раскидать в ~/.local/share/icons/hicolor/XxX/apps и в ~/.local/share/icons/hicolor/scalable/apps : пользоваться просто, обновлять просто, никаких sudo или pkexec... Ну, можно ещё добавить скрипт с py_compile или compileall, типа
#!/bin/sh

find . -regex '^.*\(__pycache__\|\.py[co]\)$' -delete
find . -type f -iname "*.py" -exec python -m py_compile {} \;

(У себя в хомяке держу папку для подобного, портативного изначально или с LD_LIBRARY_PATH.)

 

Страница сгенерирована за 0.034 секунд. Запросов: 21.