I am working in a conda environment, trying to install a package into it. On my previous computer, pip install within that environment worked. But on this new Mac, if I do that, and then try to import the package in that environment, it doesn't work.
This:
pip install SpeechRecognition
differs from
python3 -m pip install SpeechRecognition
The latter works below, but the former doesn't:
>>>import speech_recognition
>>>
Also, the files appear to be pointing to the same place:
(test) ~$ which python
/anaconda3/envs/test/bin/python
(test) ~$ which python3
/anaconda3/envs/test/bin/python3
(test) ~$ which pip
/anaconda3/envs/test/bin/pip
everything is running from the test environment.
So what's going on? and how do I fix it? I want to be able to test packages in an isolated environment reliably.
UPDATE
just to show that pip and pip3 are both using 3.7, not 2.7 on my machine:
(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)
Or, is that the issue? that pip uses a different 3.7 from the test environment? If so, why?
解决方案
On many systems, pip uses the Python 2 interpreter, while pip3 uses the Python 3 interpreter. When only Python 3 is installed, pip is identical to pip3. One way to know which interpreter is used, is to read the first line of the file pip.
python3 -m pip install is equivalent to pip3 but at least it's explicit that you want to use python3.
In your case, it looks like pip uses the Python 2 interpreter but with the module that has been installed for Python 3. That's curious.
I'd recommend you to use python3 -m pip install instead of relying on the command pip.