windows下使用pip安装模块发生“failed with error code 1”的解决方法

时间:2024-02-25 17:53:38

win不愧是最烂的开发平台,在安装第三方模块时经常出现些幺蛾子。 
今天在window中使用python3自带的pip安装scrapy时,出错,错误代码如下:

Command "f:\python\python36\python.exe -u -c "import setuptools, tokenize;__file__=\'C:\\Users\\WONDER~1\\AppData\\Local\\Temp\\pip-build-90gvzc6m\\Twisted\\setup.py\';f=getattr(tokenize, \'open\', open)(__file__);code=f.read().replace(\'\r\n\', \'\n\');f.close();exec(compile(code, __file__, \'exec\'))" install --record C:\Users\WONDER~1\AppData\Local\Temp\pip-2xl1_rnm-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\WONDER~1\AppData\Local\Temp\pip-build-90gvzc6m\Twisted\
  • 1

关键词是:failed with error code 1 
事实上,这个错误码之前在安装pandas时也出现过,当时不了了之了。 
现今推测出现这个错误代码的原因有不少:

  1. pip版本过低
  2. 未安装wheel模块。虽说wheel模块在安装scrapy时应该会被自动安装。
  3. 要安装的模块不支持当前python版本。这个问题在python3上尤为明显。(scrapy就是不能完美支持3)
  4. 电脑的名称含有中文或其他稀奇古怪的非字母、数字的字符。
  5. 电脑虚拟内存不足。这条有点扯,但是我百度的时候还有不少人提到这一点,也不知道是不是转载的同一人的结论。
  6. 水逆。

(如今看来应该是要安装的模块缺少依赖包,因为我在一台新的CentOS上配置环境时,也碰见过类似的代码——于2017.09.22)

要解决它,最简单的莫过于别用Windows了,用Linux去。当然,也Windows下的python3也不是不能用这些第三方模块,只不过需要自己手动安装这些模块,而不要使用pip了。缺点是,很多情况下搞不清包与包之间的依赖,经常会漏包。

根据不同的模块,去查阅其各自的说明文档,一般都会有安装方式的说明。像scrapy的官方文档就推荐了安装方式:使用Mingwpy。

有或者,可以直接使用集成的第三方开发环境,比如在配置机器学习的环境时,直接使用了Anaconda。


对于winx下python3.6安装scrapy,我又仔细看了看错误代码,确定是安装twisted时出了问题。经过网上搜索,找到了一个解决方案:

首先从http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下载twisted对应版本的whl文件(如我的Twisted‑17.5.0‑cp36‑cp36m‑win_amd64.whl),cp后面是Python版本,amd64代表64位,运行命令:

pip install D:\TDownloads\Twisted-17.5.0-cp36-cp36m-win_amd64.whl
  • 1

其中install后面为完整路径名

安装完成后,再次运行:

pip install Scrapy
  • 1

即可成功。