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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Собранный из исходников интерпретатор Python не видит системных библиотек  (Прочитано 165613 раз)

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

Оффлайн РыжийПёс

  • Автор темы
  • Активист
  • *
  • Сообщений: 838
  • 好红狼
    • Просмотр профиля
Здравствуйте.
Я собрал из исходников более свежий (чем есть в системе) интерпретатор Python, но столкнулся с проблемой, что он не видит библиотек (модулей) установленных системно (из deb-пакетов репозитория Ubuntu), а видит только те, которые установлены через его собственный установщик pip.
И это создаёт определённые проблемы, в частности, новый свежеобранный интерпретотор Питон нельзя назначить третьим Питоном для использования по-умолчанию, так как можно столкнуться с ситуацией, что какие-нибудь устанавливаемые программы или скрипты, использующие Python, притащат с собой свои зависимости - нужные им библиотеки, но новый интерпретатор их просто не увидит, и будет выдавать ошибку.
Насколько я понимаю, модули python из репозитория Ubuntu устанавливаются в папку /usr/lib/python3/dist-packages, и если в системном (установленном из штатного deb-пакета) интерпретаторе написать что-то вроде:
import sys
print(sys.path)
то он выдаст сначала пути к своим собственным потрохам, а в конце ещё путь к общей папке '/usr/lib/python3/dist-packages'
Но если то же самое написать в новом, собранном из исходников интерпретаторе, то он выдаст только свои собственные пути.
Вопрос: есть ли возможность как-то заставить не-убунтовский интерпретатор искать библиотеки с общесистемной папке /usr/lib/python3/dist-packages, куда ставятся модули установленные из deb-пакетов Ubuntu?
Каждый отдельно взятый человек, перешедший на GNU Linux, приближает всё остальное человечество к Светлому Будущему.

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 701
    • Просмотр профиля
РыжийПёс, вряд ли удастся подменить каталог стандартной библиотеки, окромя как явно подмонитровать дистрибутивный штатный каталог /usr/lib/python3 в каталог, содержащим стандартную библиотеку свежего интерпретатора:
sudo mount -o bind /usr/lib/python3 /usr/local/lib/python3Но это очень ПЛОХАЯ затея!!! О причинах я думаю говорить не стоит. Более того, есть встроенные модули (предоставляемые самим интерпретатором).
И вообще, поаккуратней там с использованием по умолчанию новой версии Python. Можно пол системы поломать.

Оффлайн AlexBKost

  • Старожил
  • *
  • Сообщений: 4055
  • Kubuntu 12.04, 24.04, 25.04, 25.10
    • Просмотр профиля
РыжийПёс, а почему вы не рассказал нам зачем собрал из исходников более свежий (чем есть в системе) интерпретатор Python, и в какой версии системы?
Я странен, а не странен кто ж? (С)

Оффлайн РыжийПёс

  • Автор темы
  • Активист
  • *
  • Сообщений: 838
  • 好红狼
    • Просмотр профиля
и в какой версии системы
В данном конкретном случае речь идёт о Kubuntu 14.04. Там из коробки идёт Python 3.4. На сегодняшний день он считается уже довольно старым. В Ubuntu 14.04 из исходников можно собрать Python 3.6, а если из ppa обновить openssl с версии 1.0.1 до 1.0.2, то можно собрать и Python 3.9. В более поздних версиях Python уже требуется openssl 1.1, а в последней версии Питона нужен ещё и какой-то hashlib.
Но как я понял, независимо от версии, все дебианоподобные дистрибутивы Linux ставят библиотеки из пакетов в папку /usr/lib/python3/dist-packages, и при этом они как-то изменяют нативный Python, чтобы он искал библиотеки в этой папке. Нативный же Python ищет библиотеки только в той папке, куда их скачивает его собственный pip, то есть в папке /usr/local/lib/python3.x/site-packages.
« Последнее редактирование: 29 Августа 2024, 23:35:01 от РыжийПёс »
Каждый отдельно взятый человек, перешедший на GNU Linux, приближает всё остальное человечество к Светлому Будущему.

Оффлайн Skif_off

  • Активист
  • *
  • Сообщений: 416
    • Просмотр профиля
РыжийПёс, не раскрыт вопрос, какова цель установки более свежей версии Python? По идее запустить скрипты или какое-то приложение(я) можно и без установки дефолтным.
(И в теории не факт, что библиотеки из пакетов будут совместимы с желаемой версией python.)

P.S. Глянул ради любопытства: Python 3.10 в 22.04 опакечивается с 44ю патчами, 3.8 в 20.04 - с 49ю.

Оффлайн Mornind

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Ну, зачем более свежий, допустим, понятно, но...
зачем собрал из исходников
Вот это, честно говоря, более интересный вопрос, на мой взгляд. Есть же в 2024 году куда более цивилизованные средства установки: от подключения deadsnakes-репозитория до установки через pyenv.
Есть подозрение, что это бы решило озвученную проблему на корню (еще на этапе ДО вставки мешающей ехать палки в колесо)

Оффлайн F12

  • Администратор
  • Старожил
  • *
  • Сообщений: 5637
    • Просмотр профиля
Есть же в 2024 году куда более цивилизованные средства установки: от подключения deadsnakes-репозитория до установки через pyenv.
- про pyenv ничего сказать не могу, просто не знаю, ибо не случилось пользоваться

   ... а вот что касается deadsnakes-репозитория, то, как мне показалось при беглом просмотре, там предлагаются только варианты для релизов 20.04, 22.04 и 24.04, вероятно именно поэтому ТС не воспользовался этим PPA, т.к.

речь идёт о Kubuntu 14.04


::)

Оффлайн РыжийПёс

  • Автор темы
  • Активист
  • *
  • Сообщений: 838
  • 好红狼
    • Просмотр профиля
По идее запустить скрипты или какое-то приложение(я) можно и без установки дефолтным
Запустить-то можно, но это будет сложнее. В начале скрипта обычно бывает строчка:
#!/usr/bin/env python3которая указывает системе что этот файл является скриптом на языке Python третьей версии. И по запуску файла на исполнение (например, двойной клик мышью) будет запускаться тот python3, который стоит по-умолчанию.
(Нажмите, чтобы показать/скрыть)

какова цель установки более свежей версии Python
Многие сторонние библиотеки требуют более свежей версии Питона, чем тот, который в 14.04.
(Нажмите, чтобы показать/скрыть)
.

Есть же в 2024 году куда более цивилизованные средства установки: от подключения deadsnakes-репозитория до установки через pyenv.
В этом репозитории версии для Ubuntu 20.04 и новее.
Про pyenv раньше не слышал.
Каждый отдельно взятый человек, перешедший на GNU Linux, приближает всё остальное человечество к Светлому Будущему.

 

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