pip命令偶尔会无法使用,鉴于此,将解决过程的用到的解决方法记录于此。
一、pip安装包时出现"pip Fatal error in launcher: Unable to create process using … "错误,这时候一般为pip找不到python的路径,解决方案:
1.使用 python -m pip install(官网推荐使用,下面做详细说明)
2.升级pip python -m pip install --upgrade pip
注:"pip install"和"python -m pip install"的区别:他们完全一样.事实上,分发Python模块的文档已更新,建议使用python -m pip而不是pip可执行文件,因为它更容易分辨哪个版本的python将用于实际运行pip。
如果您看一下pip可执行脚本,它只是这样做:
from pkg_resources import load_entry_point
load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
它正在调用load_entry_point,它返回一个函数,然后执行该函数.它正在使用的入口点被调用’console_scripts’.如果你查看pip我的Ubuntu机器上的/usr/lib/python2.7/dist-packages/pip-1.5.4.egg-info/entry_points.txt 的entry_points.txt文件,你会看到:
[console_scripts]
pip = pip:main
pip2.7 = pip:main
pip2 = pip:main
因此返回的入口点是模块中的main函数pip.
运行时python -m pip,您正在执行包__main__.py内的脚本pip.看起来像这样:
import sys
from .runner import run
if __name__ == '__main__':
exit = run()
if exit:
sys.exit(exit)
而runner.run功能如下:
def run():
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
## FIXME: this is kind of crude; if we could create a fake pip
## module, then exec into it and update pip.__path__ properly, we
## wouldn't have to update sys.path:
sys.path.insert(0, base)
import pip
return pip.main()
正如你所看到的,它也只是调用pip.main函数.所以这两个命令最终都调用了相同的main函数pip/init.py.
@ilciavo:小修正:python -m pip
运行pip/__ main __.py
模块,而不是pip/__ init __.py
.这是一般规则:python -m module
运行module .__ main__
模块如果module
是一个包(具有__path__
属性),否则它运行module
本身 - 两者都带有__name __ ==" __main __"
.
二、pip源修改
pip默认的源地址为https://pypi.org/simple,由于公司或者其他各种限制,用此源经常会导致连接超时或者连接不上,于是便搜集了一些国内的pip源:
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
当然直接使用pip install keras -i http://pypi.douban.com/simple 还是会报错,如下:
主要意思就是位于pypi.douban.com的存储库不是受信任的或安全的主机,正在被忽略。
要求使用“–trusted host pypi.douban.com”允许此警告。所以最终的解决办法:pip install keras -i http://pypi.douban.com/simple --trusted-host pypi.douban.com(其中的keras是你需要下载的,根据自己需求自行更改)
当然,如果每次使用都需要这么复杂,那么及其影响我们的使用心情,我们可以通过添加pip的配置文件去进行配置,配置方法如下:
pip源配置文件若不存在则需要自己手动创建,pip源配置文件可以放置的位置:
Linux/Unix:
/etc/pip.con
~/.pip/pip.conf (每一个我都找了都没有,所以我是在这个文件夹中创建的pip.conf文件)
~/.config/pip/pip.conf
Mac OSX:
~/Library/Application Support/pip/pip.conf
~/.pip/pip.conf
/Library/Application Support/pip/pip.conf
Windows:
%APPDATA%\pip\pip.ini(win10亲测有效)
%HOME%\pip\pip.ini
C:\Documents and Settings\All Users\Application Data\PyPA\pip\pip.conf (Windows XP)
C:\ProgramData\PyPA\pip\pip.conf (Windows 7及以后)
配置文件内容:
[global]
index-url = http://pypi.douban.com/simple #豆瓣源,可以换成其他的源
trusted-host = pypi.douban.com #添加豆瓣源为可信主机,要不然可能报错
disable-pip-version-check = true #取消pip版本检查,排除每次都报最新的pip
timeout = 120