pip与python是关联的
我的电脑系统里面有许多的python版本,比如python2.7,python3.6,用pip install 安装module会安装到哪个python里去呢?
其实每个版本的python都有各自的pip,比如我的电脑里面python默认路径:
which python
输出
/Users/thomas_young/miniconda3/bin/python
而pip的路径在
which pip
输出
/Users/thomas_young/miniconda3/bin/pip
也就是说pip和python是在同一层目录下的(不过有时候未必找得到相应的pip,这种情况暂时不考虑),那么要安装的时候指定关联的pip就可了,比如我想安装/Users/thomas_young/miniconda3/envs/bunnies/bin/python 这个版本的flask,找到相关联的pip,运行下面的命令即可:
/Users/thomas_young/miniconda3/envs/bunnies/bin/pip install flask
pip找不到module时的解决方案
此外,有时候pip install 可能没有相应的module,那在官方或者某些网站是可以找到相应的module安装包下载下来离线安装的:
https://pypi.python.org/pypi 或者 https://www.lfd.uci.edu/~gohlke/pythonlibs/(这里面的包基本上都是windows用的)
以flask为例:https://pypi.python.org/pypi/Flask/0.12.2 这个页面的whl文件:Flask-0.12.2-py2.py3-none-any.whl (md5)
再安装下载的whl文件即可:
pip install Flask-0.12.2-py2.py3-none-any.whl
验证一下呢:
import flask
flask.__file__
输出,模块确实安装到了指定目录下
'/Users/thomas_young/miniconda3/lib/python3.6/site-packages/flask/__init__.py'
更好的做法
了解到python和pip是关联的以后,再深入一下,可以发现其实pip是个shell脚本,比如在/Users/thomas_young/miniconda3/bin/pip里面内容是这样的:
#!/Users/thomas_young/miniconda3/bin/python
if __name__ == '__main__':
import sys
import pip
sys.exit(pip.main())
里面用到了pip的模块。所以即使没有pip这个shell脚本,直接在使用指定python运行以下命令即可, -m 表示 run library module as a script (terminates option list):
python2.7 -m pip install flask
当然flask
也可以替换成本地的whl文件.