Установка pip против python3 -m установка pip

Я работаю в среде conda, пытаясь установить в нее пакет. На моем предыдущем компьютере pip install <package name> в этой среде работал. Но на этом новом Mac, если я сделаю это, а затем попытаюсь импортировать пакет в эту среду, это не сработает.

Этот:

pip install SpeechRecognition

отличается от

python3 -m pip install SpeechRecognition

Последний работает ниже, но первый нет:

>>>import speech_recognition
>>>

Кроме того, файлы, похоже, указывают на одно и то же место:

(test) ~$ which python
/anaconda3/envs/test/bin/python
(test) ~$ which python3
/anaconda3/envs/test/bin/python3
(test) ~$ which pip
/anaconda3/envs/test/bin/pip

все запускается из тестовой среды.

Итак, что происходит? и как мне это исправить? Я хочу иметь возможность надежно тестировать пакеты в изолированной среде.

ОБНОВИТЬ

просто чтобы показать, что pip и pip3 используют 3.7, а не 2.7 на моей машине:

(base) ~$ conda activate test
(test) ~$ which pip3
/Library/Frameworks/Python.framework/Versions/3.7/bin/pip3
(test) ~$ which pip
/anaconda3/envs/test/bin/pip
(test) ~$ pip --version
pip 19.1.1 from /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pip (python 3.7)

Или это проблема? этот пункт использует другую версию 3.7 из тестовой среды? Если да, то почему?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
856
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во многих системах pip использует интерпретатор Python 2, а pip3 использует интерпретатор Python 3. Когда установлен только Python 3, pip идентичен pip3. Один из способов узнать, какой интерпретатор используется, — прочитать первую строку файла pip.

python3 -m pip install эквивалентно pip3, но, по крайней мере, ясно, что вы хотите использовать python3.

В вашем случае похоже, что pip использует интерпретатор Python 2, но с модулем, установленным для Python 3. Любопытно.

Я бы рекомендовал вам использовать python3 -m pip install вместо того, чтобы полагаться на команду pip.

which кажется, что они все одинаковые, хотя…
Ry- 08.07.2019 20:32

Я обновил заметки о своей среде, и оказалось, что pip и pip3 находятся в разных средах. Однако в моем примере я использовал pip, а не pip3...

Marc Maxmeister 08.07.2019 20:38

Первая строка /anaconda3/envs/test/bin/pip это #!/anaconda3/envs/test/bin/python @maxime

Marc Maxmeister 08.07.2019 20:41

Так что у меня есть некоторая головная боль конфигурации. Возможно, мне следует удалить python 2.7x с этого Mac, но это версия ОС по умолчанию, поэтому я сомневаюсь. Я попытаюсь использовать pip3 явно и посмотрю, исправит ли это ситуацию.

Marc Maxmeister 08.07.2019 22:51

Другие вопросы по теме