Используйте python 3.8 вместо 3,6 на элементарной ОС (или Ubuntu) - PullRequest
1 голос
/ 03 февраля 2020

Я недавно начал использовать простую ОС. Он основан на Ubuntu. Во время установки python 3.6.

я установил python 3.8 вручную, установив следующие пакеты: python3.8, python3.8-dev, python3.8-minimal, python3.8-venv. Я также обновил ссылку на двоичный файл python:

sudo ln -sf /usr/bin/python3.8 /usr/bin/python3

После этого пара вещей перестала работать. Например, когда я пытался выполнить несуществующую команду, он не печатал сообщение об ошибке, что не может найти команду, но отображал трассировку стека python. Это я решил с помощью:

cd /usr/lib/python3/dist-packages
sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so
sudo ln -s apt_inst.cpython-36m-x86_64-linux-gnu.so apt_inst.so

Как видите, ошибка python была в том, что не удалось найти скомпилированные двоичные файлы для модуля apt.

Таким образом, эта проблема была решена , но есть пара похожих, и ни один из них не может быть решен таким образом, поскольку двоичный файл модуля не совместим с python 3.8.

Можно ли полностью удалить python 3.6 и переопределить его с 3.8, чтобы двоичные файлы модуля также обновлялись? Или python 3,8 и 3,6 могут сосуществовать? Я бы согласился со ссылкой /usr/bin/python3, указывающей на python 3.6, и я бы вручную выполнил /usr/bin/python3.8 или создал для него другой псевдоним или ссылку. Однако, когда я распечатываю sys.path с /usr/bin/python3.8, я получаю это:

/usr/lib/python38.zip
/usr/lib/python3.8
/usr/lib/python3.8/lib-dynload
/home/{username}/.local/lib/python3.8/site-packages
/usr/local/lib/python3.8/dist-packages
/usr/lib/python3/dist-packages

Проблема с последним. Вот где находятся модули с файлами, совместимыми с 3.6. Можно ли каким-то образом заставить python 3.8 полностью игнорировать последний путь поиска модуля (без указания в моих скриптах sys.path.remove) ?

1 Ответ

2 голосов
/ 03 февраля 2020

Я рекомендую вам отменить вашу символическую ссылку, перезаписывая вашу системную версию Python 3. Как вы обнаружили, замена исполняемого файла python3 может создать некоторые проблемы, так как он используется внутри.

В В общем, по этой причине вы должны оставить установку вашей системы python[3] в одиночку, и обычно используется виртуальные среды . Это можно сделать следующим образом (при условии, что вы находитесь в каком-то каталоге проекта):

python3.8 -m venv venv
source venv/bin/activate

Первая команда создаст виртуальную среду ('venv') в каталоге venv. Вторая команда будет «активирована»: теперь python (и в этом случае python3 и python3.8) все ссылаются на ваш исходный python3.8 в контексте этой оболочки. Вам придется повторить это, если вы запустите новую оболочку.

Это также позволит вам устанавливать пакеты, используя pip, не мешая установке вашей системы. Использование виртуальных сред и pip - это невероятно распространенный рабочий процесс в мире разработки Python.

С точки зрения оболочки и «глобального» управления Python, вы также можете использовать pyenv для управления Python версиями и тем, что доступно в оболочке. pyenv очень хорошо, если вы хотите запустить определенную версию python, скажем, 3.8.0, но не 3.8.1.

...