mkvirtualenv сообщает, что нет модуля с именем distutils.spawn при создании venv для нестандартного python на Raspbian Buster

Raspbian Buster по умолчанию имеет Python3.7. Я пытаюсь сделать виртуальный Python3.6. У меня есть свежая установка Raspbian Buster with Desktop (а не версия с «рекомендованным программным обеспечением»), и я уже sudo apt-get update; sudo apt-get upgrade'd.

  1. Я запустил sudo apt-get install python3.6-dev, чтобы получить Python 3.6.
  2. Затем я запускаю pip3 install virtualenvwrapper и добавляю соответствующие строки в свой .bashrc.
  3. Когда я запускаю mkvirtualenv --python=/usr/bin/python3.6 venv, появляется следующая ошибка
Traceback (most recent call last):
  File "/home/pi/.local/lib/python3.7/site-packages/virtualenv.py", line 24, in <module>
    import distutils.spawn
ModuleNotFoundError: No module named 'distutils.spawn'

Я уже искал ответы, и ничего не помогло. Вот что я сделал (насколько я помню).

  • Я попытался добавить export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.6 в свой .bashrc, и это не помогло.
  • Я попробовал python3.6 -m pip install virtualenvwrapper и получил еще одну ошибку distutils:
    Traceback (most recent call last):
    File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
    File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
    File "/usr/lib/python3/dist-packages/pip/__main__.py", line 16, in <module>
    from pip._internal import main as _main  # isort:skip # noqa
    File "/usr/lib/python3/dist-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
    File "/usr/lib/python3/dist-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
    File "/usr/lib/python3/dist-packages/pip/_internal/cli/main_parser.py", line 8, in <module>
    from pip._internal.cli import cmdoptions
    File "/usr/lib/python3/dist-packages/pip/_internal/cli/cmdoptions.py", line 17, in <module>
    from pip._internal.locations import USER_CACHE_DIR, src_prefix
    File "/usr/lib/python3/dist-packages/pip/_internal/locations.py", line 10, in <module>
    from distutils import sysconfig as distutils_sysconfig
    ImportError: cannot import name 'sysconfig'
    
  • Я могу успешно делать mkvirtualenv venv, но, конечно, он использует Python 3.7, который мне не нужен.
  • Я пробовал sudo apt-get install python3-distutils --reinstall, но мне кажется, что устанавливается только версия Python3.7. Нет пакета python3.6-distutils.

Кто-нибудь знает что-нибудь о том, как заставить это работать?


person user1505021    schedule 09.10.2019    source источник


Ответы (3)


У меня была такая же проблема с использованием python3.8 и virtualenv. Я обнаружил, что не установил venv соответствующей версии python. Затем я устанавливаю его с помощью

sudo apt install python3.x-venv

Проблема решена. Попробуй и удачи!

person Yuxin Zhao    schedule 07.04.2020

У меня была такая же проблема (ModuleNotFoundError: No module named 'distutils.spawn'). Проблема заключалась в том, что PIP для python3 не был предустановлен в моей системе. Venv был создан без проблем после ручной установки:

sudo apt install python3-pip

person dannymo    schedule 17.02.2020

У меня была аналогичная ошибка при запуске команды virtualenv venv --python = python3.x Ниже показано, что у меня сработало.

Desktop/yourproject$python --version

Desktop/yourproject$python3.x -m venv yourvenv
person 7guyo    schedule 05.12.2020