#python-3.x #pip #virtualenv
Вопрос:
Я пытаюсь создать изолированную среду с помощью pip, инструкции из «Практическое машинное обучение с лыжным комплектом и потоком тензоров» заставляют меня запускать эти строки кода, и вот результат, который я получаю. Я попытался удалить pipenv
, и это создает еще одну ошибку, при которой команда pipenv не найдена. Не знаю, как это обойти, может кто-нибудь помочь? Я использую Mac с python3.9
Дарренс-MacBook-Air:~ одоннед4$ cd $ML_PATH
Дарренс-MacBook-Air:~ одоннед4$ virtualenv env
File "/usr/local/bin/virtualenv", line 6, in <module>
from pkg_resources import load_entry_point
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 3241, in <module>
@_call_aside
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 3225, in _call_aside
f(*args, **kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 3254, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 585, in _build_master
return cls._build_from_requirements(__requires__)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 598, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 786, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'platformdirs<3,>=2' distribution was not found and is required by virtualenv```
Ответ №1:
В чем проблема?
Вы пытаетесь запустить Python 3.9, верно? Ну, согласно вашему сообщению об ошибке, похоже, что вы вызываете Python 2.7:
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 3241, in <module>
^^^
Эта путаница возникает из-за того, что macOS добавила Python 2.7 в дистрибутив по… соображениям совместимости. И, вероятно, у вас есть virtualenv
этот дистрибутив, но у вас его нет platformdirs
, поэтому создание virtualenv не удается.
Как решить эту проблему?
Есть много способов прояснить эту путаницу. Хороший способ-использовать python3 -m virtualenv
(вместо virtualenv
). Это должно создать virtualenv с Python 3.
Кроме того, вы можете убедиться, что virtualenv
пакет доступен в вашей установке Python 3.9. Чтобы определить это, посмотрите virtualenv
, появляется ли оно при вводе python3 -m pip list
. Если нет, беги python3 -m pip install virtualenv
.
Ответ №2:
Попробуйте удалить setuptools
с помощью
pip uninstall -y setuptools
и переустановить его с помощью
pip install setuptools
или
Обновите инструменты настройки с помощью
pip install --upgrade setuptools
или
Что касается меня, то я сталкивался с этой проблемой несколько раньше в python 3.8. Я исправил ее с помощью
sudo apt install --reinstall python3-pkg-resources python3-setuptools
или
Сначала удалите virtualenv и setuptools и найдите папку кэша pip.
pip cache dir
Удалите кэш и установите virtualenv и setuptools.
Я ПРОСТО СКАЗАЛ НЕСКОЛЬКО ШАГОВ … ПОПРОБУЙТЕ ЭТО . МОЖЕТ ПОМОЧЬ : )
Ответ №3:
Реальная проблема здесь в том, что Mac жестко подключен для использования python2
. При использовании virtualenv
вы , возможно, выполнили команду:
$ /usr/bin/easy_install virtualenv
который должен был быть добавлен virtualenv
в /usr/bin/
для прямого использования, но для использования по умолчанию python2
, вместо python3.9
которого вы могли бы установить самостоятельно.
Простой способ обойти это использовать
$ python3 -m virtualenv <env-name>
вместо
$ virtualenv <env-name>
Или, в моем случае, добавьте псевдоним в .bash_profile
:
$ alias virtualenv="python3 -m virtualenv"
это решение для клейкой ленты, но оно также работает.