win10-64安装pygraphviz

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/njnujuly/article/details/82382437

最近部署一个项目时,pip install 的requirements里面需要用到一个pygraphviz的包。这个包是用来图形化数据的。
requirements里面所有的包都顺利安装了,唯独这个包死活装不上。
如下所示是相关的错误信息。

error: Microsoft Visual C++ 10.0 is required. Get it with "Microsoft Windows SDK 7.1": www.microsoft.com/download/details.aspx?id=8279

  ----------------------------------------
  Failed building wheel for pygraphviz
  Running setup.py clean for pygraphviz
Successfully built dominate Flask-Bootstrap flask-nav Flask-Uploads itsdangerous MarkupSafe visitor
Failed to build pygraphviz
Installing collected packages: appdirs, chardet, click, dominate, MarkupSafe, Jinja2, itsdangerous, Werkzeug, Flask, visitor, Flask-Bootstrap, Flask-Login, flask-nav, Flask-Uploads, WTForms, Flask-WTF, gunicorn, iso8601, numpy, pyparsing, six, packaging, pytz, requests, decorator, networkx, graphviz, pygraphviz
  Running setup.py install for pygraphviz ... error
    Complete output from command f:\fiat_dev\venv\scripts\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\JIANGM~1.FNS\\AppData\\Local\\Temp\\pip-install-b3cfvse8\\pygraphviz\\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\JIANGM~1.FNS\AppData\Local\Temp\pip-record-h2160l90\install-record.txt --single-version-externally-managed --compile --install-headers f:\fiat_dev\venv\include\site\python3.4\pygraphviz:
    ...
    running build_ext
    building 'pygraphviz._graphviz' extension
    error: Microsoft Visual C++ 10.0 is required. Get it with "Microsoft Windows SDK 7.1": www.microsoft.com/download/details.aspx?id=8279

    ----------------------------------------
Command "f:\fiat_dev\venv\scripts\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\JIANGM~1.FNS\\AppData\\Local\\Temp\\pip-install-b3cfvse8\\pygraphviz\\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\JIANGM~1.FNS\AppData\Local\Temp\pip-record-h2160l90\install-record.txt --single-version-externally-managed --compile --install-headers f:\fiat_dev\venv\include\site\python3.4\pygraphviz" failed with error code 1 in C:\Users\JIANGM~1.FNS\AppData\Local\Temp\pip-install-b3cfvse8\pygraphviz\

按照正常思路,我开始把这个错误信息贴到网上去google.找到了一些所谓的解决办法,包括pygraphviz的github社区,以及其他博客文章。解决方法不外乎:
1.让你先安装graphviz,然后把环境变量设置一下。然后在安装的时候指定Pip 的inlude path之类的参数
2.让你安装一个32位的python,然后再去按照1的思路,重新编译安装pygraphviz
3.去Unofficial Windows Binaries for Python Extension Packages上下载一个编译好的python包来安装。
上面这些解决方法,我都尝试了。然而当我编译的过程中,又出现了很多层出不穷的c的编译错误。比如格式转换错误等等。可谓是焦头烂额,也没有解决实际的问题。我就纳闷了,网上这些帖子明明说这么做可以解决的啊!

当我接到一个有用的信息,说pygraphviz不支持python3.4以上的版本。于是我重新安装了一个python3.4,修改了系统的python环境变量。当我重新在cmd里面pip install pygraphviz-xxx-.whl的时候,系统提示我安装成功了。
但是这个项目我使用vitrualenv来管理它所需的包。刚刚我只是将这个包装在了系统python库里。于是我激活了当前venv,
再次运行pip install pygraphviz-xxx-.whl,一个熟悉的错误信息又出现了:

(venv) F:\pygraphviz-1.3.1>pip install pygraphviz-1.3.1-cp34-none-win_amd64.whl
pygraphviz-1.3.1-cp34-none-win_amd64.whl is not a supported wheel on this platform.
You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

等等,刚刚安装不是好好的吗?问题出在哪了?
思考一番,发现是因为这个venv里面构筑的虚拟python环境是一周前我布置好的,那个时候系统的python版本是3.5,
所以这个虚拟环境里面的python版本也是3.5.所以安装的时候失败了。为了印证我的想法,我把venv删除,重新打开一个cmd,重新安装了一个虚拟环境。
当我再一次输入pip install pygraphviz-xxx-.whl,命令行提示我安装成功了。

所以原来这个错误信息就是在说版本不支持啊:
pygraphviz-1.3.1-cp34-none-win_amd64.whl is not a supported wheel on this platform.
这句话我至少看了10多遍,在我没有得到可能是Python版本不支持的信息之前。我一直以为这句话的意思是这个whl文件的版本不被我的系统版本支持。如今回过头,其实它应该是想说,python版本不支持把?


总结一下:

  • pygraphviz对python3.4以上版本不支持,
    当你安装这个包总是报错,不妨先试试更换一个低版本的python
  • venv里面的python环境是基于系统Python版本的,
    但是venv安装后,它从某种程度上也是独立于系统python的
  • is not a supported wheel on this platform
    平台不一定仅仅是操作系统平台,也可能是开发环境等等

另外附上安装pygraphviz可能有用的连接

最后,祝大家好运~

猜你喜欢

转载自blog.csdn.net/njnujuly/article/details/82382437