Характеристики:
Я использую виртуальную машину Ubuntu Server 20.04.1 LTS в HyperV (с установленным графическим интерфейсом).
Я запускаю это и вижу, что оно пришло с Python 3.8.5:
$ python3 --version
Python 3.8.5
Цель:
Мне необходимо:
- Установите Python 3.6.9 на мою виртуальную машину.
- Перейдите в существующий каталог репозитория и создайте виртуальную среду для Python 3.6.9.
- Установите следующие пакеты в виртуальной среде Python 3.6.9:
Реализация:
Сначала я загрузил исходные файлы Python 3.6.9 с https://www.python.org/downloads/release/python-369/ и извлек их в каталог на моей виртуальной машине.
Затем я перешел в указанный каталог и выполнил следующие команды:
$ time ./configure
$ time make
$ time sudo make install
$ time make clean
Затем я запустил эти команды и увидел, что Python 3.6.9 теперь установлен.
$ python3 --version
Python 3.8.5
$ python3.6 --version
Python 3.6.9
Затем я установил pip
и его пакет virtualenv
. Если я запускаю эти команды, я получаю:
$ pip --version
pip 21.0.1 from /home/ubuntu/.local/lib/python3.8/site-packages/pip (python 3.8)
$ virtualenv --version
virtualenv 20.4.0 from /usr/local/lib/python3.8/dist-packages/virtualenv/__init__.py
Я проверю это в новом каталоге на рабочем столе. Как только я буду уверен, что это работает, я сделаю это в репозитории, где мне это нужно.
Я cd
на рабочий стол. Затем я запускаю это, чтобы увидеть, где на моей виртуальной машине установлен Python 3.6.9:
$ which python3.6
/usr/local/bin/python3.6
Затем я запускаю:
$ virtualenv -p /usr/local/bin/python3.6 testenv3.6
Новый каталог testenv3.6
успешно создан на моем рабочем столе. Я cd
к нему и запускаю:
$ source ./bin/activate
(testenv3.6) $ python3 --version
Python 3.6.9
Все кажется в порядке. Затем я попытался запустить pip install pandas
и получил эту ошибку:
from pip._vendor import html5lib, requests
ImportError: cannot import name requests
Это также произошло, когда я попытался установить numpy
или любой другой пакет. Похоже на это: ImportError: невозможно импортировать запросы имени
Итак, я перешел к файлу, вызывающему ошибку. Я не могу точно вспомнить, где это было, но я знаю, что изменил это:
from pip._vendor import html5lib, requests
к этому:
from pip._vendor import html5lib
import requests
Затем я снова пытаюсь запустить pip install pandas
или pip install numpy
и получаю:
ModuleNotFoundError: No module named 'zlib'
Я снова поискал в Stack Overflow и нашел это: нет модуля с именем zlib
Согласно ответу этого URL-адреса, я попытался запустить sudo apt-get install zlib1g-dev
. Я получаю это:
zlib1g-dev is already the newest version (1:1.2.11.dfsg-2ubuntu1.2).
The following packages were automatically installed and are no longer required:
libpython3.6-minimal libpython3.6-stdlib python3.6-minimal
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 104 not upgraded.
Если я попытаюсь снова запустить pip install pandas
или pip install numpy
, останется та же ошибка:
ModuleNotFoundError: No module named 'zlib'
Я также пробовал pip install zlib
, но это не работает.
Я искал несколько вопросов о переполнении стека для похожих проблем. Люди сказали:
- Понизьте и установите определенную версию
pip
. - Понизьте и установите определенную версию
virtualenv
. - Попробуйте установить нужную версию Python из других источников.
- Попробуйте установить Pip из других источников.
Кажется, ничего не работает.
Я также заметил, что предустановленные версии Python были в /bin/
, а моя установка python 3.6.9 была в /usr/local/bin/
. Поэтому я даже попытался переместить файл Python 3.6.9 рядом с другими предустановленными версиями Python. Итак, раньше я получил это:
$ which python3.6
/usr/local/bin/python3.6
И теперь я получаю это:
$ which python3.6
/bin/python3.6
Это все равно не исправило.
Теперь, после всех моих попыток, я мог установить Python в нескольких местах и превратить свою систему в беспорядок. Я не уверен.
Помощь?