сделал
./configure --prefix=/home/dan/.local --enable-loadable-sqlite-extensions --enable-optimizations
Потом make, make install.
Дальше так:
which python3
-->> ~/.local/bin/python3
python3 -m pip install --upgrade pip
python3 -m pip install ipython
Но ipython в venv падает с ошибкой:
ipython
Traceback (most recent call last):
File "/home/dan/.local/lib/python3.10/runpy.py", line 187, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File "/home/dan/.local/lib/python3.10/runpy.py", line 146, in _get_module_details
return _get_module_details(pkg_main_name, error)
File "/home/dan/.local/lib/python3.10/runpy.py", line 110, in _get_module_details
__import__(pkg_name)
File "/home/dan/.local/lib/python3.10/site-packages/IPython/__init__.py", line 53, in <module>
from .terminal.embed import embed
File "/home/dan/.local/lib/python3.10/site-packages/IPython/terminal/embed.py", line 15, in <module>
from IPython.core.interactiveshell import DummyMod, InteractiveShell
File "/home/dan/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 73, in <module>
from IPython.core.history import HistoryManager
File "/home/dan/.local/lib/python3.10/site-packages/IPython/core/history.py", line 11, in <module>
import sqlite3
File "/home/dan/.local/lib/python3.10/sqlite3/__init__.py", line 57, in <module>
from sqlite3.dbapi2 import *
File "/home/dan/.local/lib/python3.10/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'
Гуглы говорят скомпилить с --enable-loadable-sqlite-extensions, но я так и сделал.
Запуск через python3 -m IPython аналогичный.
Установка модуля pysqlite3 тоже не помогла
В системном (3.6.8) питоне всё работает
https://t.me/ru_python_beginners/1971496
эммм, если откинуть глупость пункта 4, потому как я не собираю пакет в системную директорию, очевидность и бесполезность пункта 5 - остается незакрытыми два вопроса, направление для получения ответа на которые я не постесняюсь спросить: Вопрос 2: как узнать, как именно собран системный пайтон? Вопрос 3: нужно смотреть все чеинджлоги между 3.6.8 и 3.10.4 что бы понять почему ipython падает с sqlite3 error?:)
А куда ты собираешь? Если делаешь инсталл, то увы. 2. Посмотреть src пакет, почитать доки от мейнтейнеров дистрибутива, почитать доки о вариантах сборки питона на сайте питона и в хелпе конфигура 3. Нет, для этого скорее всего не надо, но кто знает. В целом я вообще не понимаю зачем собирать из сорцов, когда это неплохо делают другие люди
Почему бы не заюзать докер?
почему бы не собрать себе 3.10, в поставить venv и не крутить докера там, где это не нужно?:)
Чтобы не ебать мозг себе :)
А зачем тебе вообще 3.10?
ты думаешь, что если я сейчас поставлю 3.9 - ситуация сильно поменяется?
Чтобы, например, потом следующий админ не думал как его обновить для исправления секьюрити багов
следующий админ будет использовать venv в тех вещах, где это необходимо. Более того, я повторюсь, я не собираю системный питон. Всё, что останется от меня по наследству - будет упаковано в venv и сможет быть повторено из гита на любой машине.
1. Как следущий админ будет обновлять питон? Снова собирать из сорцов? Как он вообще узнает куда питон установлен, если пакетный менеджер об этом не знает 2. Венв это не для питона, это для либ 3. "Упаковано в венв" и "Повторено из Гита"? У меня смутные подозрения, что ты не вполне знаешь про венв
1. Да как захочет. Будет необходимость - будет из сорцов. Или качать готовые бинари. Админу нет необходимости знать, куда установлен питон. Ему нужно знать, на какой версии питона оно раньше работало. И найти себе такую же. Ну или разбираться, почему не работает на его. 2. venv это способ ограничения неимспейса для процесса. Он копирует туда и свой бинарь, и те либы, которые ты поставишь внутри. 3. Ну вот тут я не знаю как это правильно назвать. Но да, в этом контексте - скачать код с гитхаба, активировать venv с соответствующей версией питона, поставить либы из реквайрементсов и запустить
Как хочет? Пожалуйста, не занимаетесь администрированием серверов
Тот случай, когда обычное обновление питона может сломать все и остановить работу сервиса на неопределённое время.
2. Нет. Венв не копирует туда бинарь. 3. Скачать код приложения - да. Только после этого надо ещё на систему установить нужныц питон и создать венв, куда установить зависимости
2. Тут да, я поспешил. Там ссылка
Не себе. Речь про администрирование твоего сервера, когда тебе надоест это делать самому
Я же вроде нигде не говорил, что я запускаю какие-то сервисы на питоне, собранном в хомяке юзера :)
Наверно потому что у тебя 8 центось
Хмм
предполагаю, что вопрос где-то в этом: https://stackoverflow.com/questions/65336876/python3-5-sees-but-python3-9-does-not-see-sqlite3
что тебе мейк сказал ты конечно не читал и скулайт-дев пакета тоже не ставил мозг не нужен
грубо. Но принимается. Я действительно не очень внимательно читал вывод мейка. Думал что он свалится с ошибкой, если не найдет нужное при явном указании ключа.
нет, после мейка идет рапорт о том что собралось, а что нет очевидно скулайт не собрался
ну вот в этом и вопрос. Я ни в коем случае никого не учу как нужно, но я ожидал, что при указании ключа --enable-loadable-sqlite-extensions он будет включен в обязательные при сборке. Поэтому строки: The necessary bits to build these optional modules were not found: _dbm _gdbm _sqlite3 _tkinter nis Были успешно мною проигнорированы. PS. Это я удалил sqlite-devel что бы затестить
Обсуждают сегодня