# "Failed building wheel for brotlipy" error message when install using dev.sh

**URL:** <https://discourse.mitmproxy.org/t/failed-building-wheel-for-brotlipy-error-message-when-install-using-dev-sh/128>\
**Category:** help\
**Created:** [August 5, 2016, 1:55am UTC](https://discourse.mitmproxy.org/t/failed-building-wheel-for-brotlipy-error-message-when-install-using-dev-sh/128 "2016-08-05T01:55:01Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ndhydev](https://avatars.discourse-cdn.com/v4/letter/n/b77776/32.png) [@ndhydev](https://discourse.mitmproxy.org/u/ndhydev)\
**Post date:** [August 5, 2016, 1:55am UTC](https://discourse.mitmproxy.org/t/failed-building-wheel-for-brotlipy-error-message-when-install-using-dev-sh/128/1 "2016-08-05T01:55:01Z")

</div>

Long before, I always install mitmproxy using pip. Think like some kind of stable  
sudo -H pip install mitmproxy.

But it always give me 0.17 version. We know that mitmproxy master is updated to 0.18. I want to check if this version fixed the Facebook cannot logged in or Gmail cookie disabled error. So I install from master clone.

##### Steps to reproduce the problem:

I am using LinuxMint 18, I had virtualenv installed.

1. I clone the repo: `git clone https://github.com/mitmproxy/mitmproxy`
2. cd mitmproxy
3. Run the [dev.sh](http://dev.sh) from terminal  
sudo -H ./dev.sh

##### What is the expected behavior?

It will install mitmproxy properly.

##### What went wrong?

The installation run for a short time, but it got an error “Failed building wheel for brotlipy”.  
This is the full terminal output:  
$ ./dev.sh

- PYVERSION=

- VENV=venv

- echo Creating dev environment in venv using Python  
Creating dev environment in venv using Python

- python -m virtualenv venv --always-copy  
New python executable in /home/hynguyen/mitmproxy/venv/bin/python  
Installing setuptools, pip, wheel…done.

- . venv/bin/activate

- deactivate nondestructive

- unset -f pydoc

- [-z]

- [-z]

- [-n]

- [-n]

- [-z]

- unset VIRTUAL\_ENV

- [! nondestructive = nondestructive]

- VIRTUAL\_ENV=/home/hynguyen/mitmproxy/venv

- export VIRTUAL\_ENV

- \_OLD\_VIRTUAL\_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

- PATH=/home/hynguyen/mitmproxy/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

- export PATH

- [-z]

- [-z]

- \_OLD\_VIRTUAL\_PS1=$

- [x != x]

- basename /home/hynguyen/mitmproxy/venv

- PS1=(venv) $

- export PS1

- alias pydoc

- [-n]

- [-n]

- pip install -U pip setuptools  
Requirement already up-to-date: pip in ./venv/lib/python2.7/site-packages  
Requirement already up-to-date: setuptools in ./venv/lib/python2.7/site-packages

- pip install -r requirements.txt  
Ignoring lxml: markers u"sys\_platform == ‘win32’ and python\_version == ‘3.5’" don’t match your environment  
Obtaining file:///home/hynguyen/mitmproxy (from -r requirements.txt (line 2))  
Obtaining file:///home/hynguyen/mitmproxy/release (from -r requirements.txt (line 3))  
Collecting backports.ssl\_match\_hostname\<3.6,\>=3.5.0.1 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading backports.ssl\_match\_hostname-3.5.0.1.tar.gz  
Collecting blinker\<1.5,\>=1.4 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading blinker-1.4.tar.gz (111kB)  
100% |████████████████████████████████| 112kB 231kB/s  
Collecting click\<7.0,\>=6.2 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading click-6.6.tar.gz (283kB)  
100% |████████████████████████████████| 286kB 1.8MB/s  
Collecting certifi\>=2015.11.20.1 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading certifi-2016.8.2-py2.py3-none-any.whl (381kB)  
100% |████████████████████████████████| 389kB 617kB/s  
Collecting configargparse\<0.11,\>=0.10 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading ConfigArgParse-0.10.0.tar.gz  
Collecting construct\<2.6,\>=2.5.2 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading construct-2.5.2-py2.py3-none-any.whl (72kB)  
100% |████████████████████████████████| 81kB 1.6MB/s  
Collecting cryptography\<1.5,\>=1.3 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading cryptography-1.4.tar.gz (399kB)  
100% |████████████████████████████████| 409kB 324kB/s  
Collecting cssutils\<1.1,\>=1.0.1 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading cssutils-1.0.1-py2-none-any.whl (292kB)  
100% |████████████████████████████████| 296kB 569kB/s  
Collecting Flask\<0.12,\>=0.10.1 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading Flask-0.11.1-py2.py3-none-any.whl (80kB)  
100% |████████████████████████████████| 81kB 814kB/s  
Collecting h2\<3,\>=2.4.0 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading h2-2.4.0-py2.py3-none-any.whl (54kB)  
100% |████████████████████████████████| 61kB 1.0MB/s  
Collecting html2text\<=2016.5.29,\>=2016.1.8 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading html2text-2016.5.29.tar.gz (46kB)  
100% |████████████████████████████████| 51kB 2.0MB/s  
Collecting hyperframe\<5,\>=4.0.1 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading hyperframe-4.0.1-py2.py3-none-any.whl  
Collecting jsbeautifier\<1.7,\>=1.6.3 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading jsbeautifier-1.6.3.tar.gz (49kB)  
100% |████████████████████████████████| 51kB 2.2MB/s  
Collecting lxml\<=3.6.0,\>=3.5.0 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading lxml-3.6.0.tar.gz (3.7MB)  
100% |████████████████████████████████| 3.7MB 269kB/s  
Collecting Pillow\<3.4,\>=3.2 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading Pillow-3.3.0-cp27-cp27mu-manylinux1\_x86\_64.whl (5.5MB)  
100% |████████████████████████████████| 5.5MB 216kB/s  
Collecting passlib\<1.7,\>=1.6.5 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading passlib-1.6.5-py2.py3-none-any.whl (317kB)  
100% |████████████████████████████████| 327kB 598kB/s  
Collecting pyasn1\<0.2,\>=0.1.9 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pyasn1-0.1.9-py2.py3-none-any.whl  
Collecting pyOpenSSL\<17.0,\>=16.0 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pyOpenSSL-16.0.0-py2.py3-none-any.whl (45kB)  
100% |████████████████████████████████| 51kB 933kB/s  
Collecting pyparsing\<2.2,\>=2.1.3 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pyparsing-2.1.5-py2.py3-none-any.whl (42kB)  
100% |████████████████████████████████| 51kB 2.8MB/s  
Collecting pyperclip\<1.6,\>=1.5.22 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pyperclip-1.5.27.zip  
Collecting requests\<2.11,\>=2.9.1 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading requests-2.10.0-py2.py3-none-any.whl (506kB)  
100% |████████████████████████████████| 512kB 620kB/s  
Collecting six\<1.11,\>=1.10 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading six-1.10.0-py2.py3-none-any.whl  
Collecting tornado\<4.5,\>=4.3 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading tornado-4.4.1.tar.gz (456kB)  
100% |████████████████████████████████| 460kB 677kB/s  
Collecting urwid\<1.4,\>=1.3.1 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading urwid-1.3.1.tar.gz (588kB)  
100% |████████████████████████████████| 593kB 634kB/s  
Collecting watchdog\<0.9,\>=0.8.3 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading watchdog-0.8.3.tar.gz (83kB)  
100% |████████████████████████████████| 92kB 4.2MB/s  
Collecting brotlipy\<0.4,\>=0.3.0 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading brotlipy-0.3.0.tar.gz (492kB)  
100% |████████████████████████████████| 501kB 678kB/s  
Collecting enum34\<2,\>=1.0.4 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading enum34-1.1.6-py2-none-any.whl  
Collecting ipaddress\<1.1,\>=1.0.15 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading ipaddress-1.0.16-py27-none-any.whl  
Collecting typing==3.5.2.2 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading typing-3.5.2.2.tar.gz (51kB)  
100% |████████████████████████████████| 51kB 2.7MB/s  
Collecting tox\<3,\>=2.3 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading tox-2.3.1-py2.py3-none-any.whl (40kB)  
100% |████████████████████████████████| 40kB 4.0MB/s  
Collecting mock\<2.1,\>=2.0 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading mock-2.0.0-py2.py3-none-any.whl (56kB)  
100% |████████████████████████████████| 61kB 346kB/s  
Collecting pytest\<3,\>=2.8.7 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pytest-2.9.2-py2.py3-none-any.whl (162kB)  
100% |████████████████████████████████| 163kB 796kB/s  
Collecting pytest-cov\<3,\>=2.2.1 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pytest\_cov-2.3.0-py2.py3-none-any.whl  
Collecting pytest-timeout\<2,\>=1.0.0 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pytest\_timeout-1.0.0-py2.py3-none-any.whl  
Collecting pytest-xdist\<2,\>=1.14 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pytest\_xdist-1.14-py2.py3-none-any.whl  
Collecting sphinx\<1.5,\>=1.3.5 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading Sphinx-1.4.5-py2.py3-none-any.whl (1.6MB)  
100% |████████████████████████████████| 1.6MB 430kB/s  
Collecting sphinx-autobuild\<0.7,\>=0.5.2 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading sphinx\_autobuild-0.6.0-py2-none-any.whl  
Collecting sphinxcontrib-documentedlist\<0.5,\>=0.4.0 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading sphinxcontrib-documentedlist-0.4.tar.gz  
Collecting sphinx\_rtd\_theme\<0.2,\>=0.1.9 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading sphinx\_rtd\_theme-0.1.9-py2-none-any.whl (693kB)  
100% |████████████████████████████████| 696kB 376kB/s  
Collecting beautifulsoup4\<4.6,\>=4.4.1 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading beautifulsoup4-4.5.1-py2-none-any.whl (83kB)  
100% |████████████████████████████████| 92kB 1.9MB/s  
Collecting harparser\<0.3,\>=0.2 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading harparser-0.2.tar.gz  
Collecting pytz\<=2016.6.1,\>=2015.07.0 (from mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pytz-2016.6.1-py2.py3-none-any.whl (481kB)  
100% |████████████████████████████████| 481kB 620kB/s  
Collecting twine\<1.8,\>=1.6.5 (from mitmproxy-rtool==1.0-\>-r requirements.txt (line 3))  
Downloading twine-1.7.4-py2.py3-none-any.whl  
Collecting virtualenv\<15.1,\>=14.0.5 (from mitmproxy-rtool==1.0-\>-r requirements.txt (line 3))  
Downloading virtualenv-15.0.2-py2.py3-none-any.whl (1.8MB)  
100% |████████████████████████████████| 1.8MB 484kB/s  
Requirement already satisfied (use --upgrade to upgrade): wheel\<0.30,\>=0.29.0 in ./venv/lib/python2.7/site-packages (from mitmproxy-rtool==1.0-\>-r requirements.txt (line 3))  
Collecting pysftp!=0.2.9,\<0.3,\>=0.2.8 (from mitmproxy-rtool==1.0-\>-r requirements.txt (line 3))  
Downloading pysftp-0.2.8.tar.gz  
Collecting idna\>=2.0 (from cryptography\<1.5,\>=1.3-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading idna-2.1-py2.py3-none-any.whl (54kB)  
100% |████████████████████████████████| 61kB 3.5MB/s  
Requirement already satisfied (use --upgrade to upgrade): setuptools\>=11.3 in ./venv/lib/python2.7/site-packages (from cryptography\<1.5,\>=1.3-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Collecting cffi\>=1.4.1 (from cryptography\<1.5,\>=1.3-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading cffi-1.7.0-cp27-cp27mu-manylinux1\_x86\_64.whl (383kB)  
100% |████████████████████████████████| 389kB 1.8MB/s  
Collecting itsdangerous\>=0.21 (from Flask\<0.12,\>=0.10.1-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading itsdangerous-0.24.tar.gz (46kB)  
100% |████████████████████████████████| 51kB 353kB/s  
Collecting Werkzeug\>=0.7 (from Flask\<0.12,\>=0.10.1-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading Werkzeug-0.11.10-py2.py3-none-any.whl (306kB)  
100% |████████████████████████████████| 307kB 763kB/s  
Collecting Jinja2\>=2.4 (from Flask\<0.12,\>=0.10.1-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading Jinja2-2.8-py2.py3-none-any.whl (263kB)  
100% |████████████████████████████████| 266kB 1.6MB/s  
Collecting hpack\<3,\>=2.2 (from h2\<3,\>=2.4.0-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading hpack-2.3.0-py2.py3-none-any.whl  
Collecting singledispatch (from tornado\<4.5,\>=4.3-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading singledispatch-3.4.0.3-py2.py3-none-any.whl  
Collecting backports\_abc\>=0.4 (from tornado\<4.5,\>=4.3-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading backports\_abc-0.4-py2.py3-none-any.whl  
Collecting PyYAML\>=3.10 (from watchdog\<0.9,\>=0.8.3-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading PyYAML-3.11.zip (371kB)  
100% |████████████████████████████████| 378kB 697kB/s  
Collecting argh\>=0.24.1 (from watchdog\<0.9,\>=0.8.3-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading argh-0.26.2-py2.py3-none-any.whl  
Collecting pathtools\>=0.1.1 (from watchdog\<0.9,\>=0.8.3-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pathtools-0.1.2.tar.gz  
Collecting py\>=1.4.17 (from tox\<3,\>=2.3-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading py-1.4.31-py2.py3-none-any.whl (81kB)  
100% |████████████████████████████████| 92kB 1.8MB/s  
Collecting pluggy\<0.4.0,\>=0.3.0 (from tox\<3,\>=2.3-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pluggy-0.3.1-py2.py3-none-any.whl  
Collecting funcsigs\>=1; python\_version \< “3.3” (from mock\<2.1,\>=2.0-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading funcsigs-1.0.2-py2.py3-none-any.whl  
Collecting pbr\>=0.11 (from mock\<2.1,\>=2.0-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pbr-1.10.0-py2.py3-none-any.whl (96kB)  
100% |████████████████████████████████| 102kB 2.5MB/s  
Collecting coverage\>=3.7.1 (from pytest-cov\<3,\>=2.2.1-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading coverage-4.2.tar.gz (359kB)  
100% |████████████████████████████████| 368kB 626kB/s  
Collecting execnet\>=1.1 (from pytest-xdist\<2,\>=1.14-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading execnet-1.4.1-py2.py3-none-any.whl (40kB)  
100% |████████████████████████████████| 40kB 1.5MB/s  
Collecting docutils\>=0.11 (from sphinx\<1.5,\>=1.3.5-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading docutils-0.12.tar.gz (1.6MB)  
100% |████████████████████████████████| 1.6MB 388kB/s  
Collecting Pygments\>=2.0 (from sphinx\<1.5,\>=1.3.5-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading Pygments-2.1.3-py2.py3-none-any.whl (755kB)  
100% |████████████████████████████████| 757kB 594kB/s  
Collecting imagesize (from sphinx\<1.5,\>=1.3.5-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading imagesize-0.7.1-py2.py3-none-any.whl  
Collecting babel!=2.0,\>=1.3 (from sphinx\<1.5,\>=1.3.5-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading Babel-2.3.4-py2.py3-none-any.whl (7.1MB)  
100% |████████████████████████████████| 7.1MB 170kB/s  
Collecting snowballstemmer\>=1.1 (from sphinx\<1.5,\>=1.3.5-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading snowballstemmer-1.2.1-py2.py3-none-any.whl (64kB)  
100% |████████████████████████████████| 71kB 2.1MB/s  
Collecting alabaster\<0.8,\>=0.7 (from sphinx\<1.5,\>=1.3.5-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading alabaster-0.7.9-py2.py3-none-any.whl  
Collecting port-for==0.3.1 (from sphinx-autobuild\<0.7,\>=0.5.2-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading port-for-0.3.1.tar.gz  
Collecting livereload\>=2.3.0 (from sphinx-autobuild\<0.7,\>=0.5.2-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading livereload-2.4.1-py2-none-any.whl  
Collecting pkginfo\>=1.0 (from twine\<1.8,\>=1.6.5-\>mitmproxy-rtool==1.0-\>-r requirements.txt (line 3))  
Downloading pkginfo-1.3.2-py2.py3-none-any.whl  
Collecting requests-toolbelt\>=0.5.1 (from twine\<1.8,\>=1.6.5-\>mitmproxy-rtool==1.0-\>-r requirements.txt (line 3))  
Downloading requests\_toolbelt-0.7.0-py2.py3-none-any.whl (52kB)  
100% |████████████████████████████████| 61kB 3.0MB/s  
Collecting clint (from twine\<1.8,\>=1.6.5-\>mitmproxy-rtool==1.0-\>-r requirements.txt (line 3))  
Downloading clint-0.5.1.tar.gz  
Collecting paramiko\>=1.7.7 (from pysftp!=0.2.9,\<0.3,\>=0.2.8-\>mitmproxy-rtool==1.0-\>-r requirements.txt (line 3))  
Downloading paramiko-2.0.2-py2.py3-none-any.whl (171kB)  
100% |████████████████████████████████| 174kB 824kB/s  
Collecting pycparser (from cffi\>=1.4.1-\>cryptography\<1.5,\>=1.3-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading pycparser-2.14.tar.gz (223kB)  
100% |████████████████████████████████| 225kB 547kB/s  
Collecting MarkupSafe (from Jinja2\>=2.4-\>Flask\<0.12,\>=0.10.1-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading MarkupSafe-0.23.tar.gz  
Collecting apipkg\>=1.4 (from execnet\>=1.1-\>pytest-xdist\<2,\>=1.14-\>mitmproxy==0.18-\>-r requirements.txt (line 2))  
Downloading apipkg-1.4-py2.py3-none-any.whl  
Collecting args (from clint-\>twine\<1.8,\>=1.6.5-\>mitmproxy-rtool==1.0-\>-r requirements.txt (line 3))  
Downloading args-0.1.0.tar.gz  
Building wheels for collected packages: backports.ssl-match-hostname, blinker, click, configargparse, cryptography, html2text, jsbeautifier, lxml, pyperclip, tornado, urwid, watchdog, brotlipy, typing, sphinxcontrib-documentedlist, harparser, pysftp, itsdangerous, PyYAML, pathtools, coverage, docutils, port-for, clint, pycparser, MarkupSafe, args  
Running [setup.py](http://setup.py) bdist\_wheel for backports.ssl-match-hostname … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/5d/72/36/b2a31507b613967b728edc33378a5ff2ada0f62855b93c5ae1  
Running [setup.py](http://setup.py) bdist\_wheel for blinker … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/7b/8a/eb/5a4f4444f366c515073db8a129c92d4727ad945e5e64b9e8bd  
Running [setup.py](http://setup.py) bdist\_wheel for click … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/b0/6d/8c/cf5ca1146e48bc7914748bfb1dbf3a40a440b8b4f4f0d952dd  
Running [setup.py](http://setup.py) bdist\_wheel for configargparse … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/1e/2a/b6/4a95a72c4f9caf9d2a8873487ea7a65f7e46a1133a75df9856  
Running [setup.py](http://setup.py) bdist\_wheel for cryptography … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/f6/6c/21/11ec069285a52d7fa8c735be5fc2edfb8b24012c0f78f93d20  
Running [setup.py](http://setup.py) bdist\_wheel for html2text … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/b6/98/50/7105032ddc028d1386bab8840a642d9c3667cda36703f368aa  
Running [setup.py](http://setup.py) bdist\_wheel for jsbeautifier … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/eb/ab/f1/99897a8659c1289dc9fbf546870e4095d299089d9e8dcff441  
Running [setup.py](http://setup.py) bdist\_wheel for lxml … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/6c/eb/a1/e4ff54c99630e3cc6ec659287c4fd88345cd78199923544412  
Running [setup.py](http://setup.py) bdist\_wheel for pyperclip … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/0b/fe/d7/1ab1ec7a91dc707d04b872214f6ce617f1b04a027de12fd4fe  
Running [setup.py](http://setup.py) bdist\_wheel for tornado … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/c2/65/99/727ea73b981e0ef1fb8ab678ecf86f39c809230f5301ac3a40  
Running [setup.py](http://setup.py) bdist\_wheel for urwid … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/e7/bb/9d/d7f7fcc9b3aeae20cf4685667635002415629e6395ff2dda7d  
Running [setup.py](http://setup.py) bdist\_wheel for watchdog … done  
Stored in directory: /home/hynguyen/.cache/pip/wheels/3c/9c/be/e82ae5a37c19baf8abe88623d1f47d2d502bed7b54d4f34740  
Running [setup.py](http://setup.py) bdist\_wheel for brotlipy … error  
Complete output from command /home/hynguyen/mitmproxy/venv/bin/python -u -c “import setuptools, tokenize; **file** =’/tmp/pip-build-hMw2KF/brotlipy/setup.py’;exec(compile(getattr(tokenize, ‘open’, open)( **file** ).read().replace(’\r\n’, ‘\n’), **file** , ‘exec’))” bdist\_wheel -d /tmp/tmpkKWdYTpip-wheel- --python-tag cp27:  
running bdist\_wheel  
running build  
running build\_py  
creating build  
creating build/lib.linux-x86\_64-2.7  
creating build/lib.linux-x86\_64-2.7/brotli  
copying src/brotli/build.py -\> build/lib.linux-x86\_64-2.7/brotli  
copying src/brotli/ **init**.py -\> build/lib.linux-x86\_64-2.7/brotli  
copying src/brotli/brotli.py -\> build/lib.linux-x86\_64-2.7/brotli  
running build\_clib  
building ‘libbrotli’ library  
creating build/temp.linux-x86\_64-2.7  
creating build/temp.linux-x86\_64-2.7/libbrotli  
creating build/temp.linux-x86\_64-2.7/libbrotli/dec  
creating build/temp.linux-x86\_64-2.7/libbrotli/enc  
creating build/temp.linux-x86\_64-2.7/src  
creating build/temp.linux-x86\_64-2.7/src/brotli  
x86\_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D\_FORTIFY\_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/bit\_reader.c -o build/temp.linux-x86\_64-2.7/libbrotli/dec/bit\_reader.o  
x86\_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D\_FORTIFY\_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/decode.c -o build/temp.linux-x86\_64-2.7/libbrotli/dec/decode.o  
x86\_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D\_FORTIFY\_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/huffman.c -o build/temp.linux-x86\_64-2.7/libbrotli/dec/huffman.o  
x86\_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D\_FORTIFY\_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/state.c -o build/temp.linux-x86\_64-2.7/libbrotli/dec/state.o  
x86\_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D\_FORTIFY\_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/streams.c -o build/temp.linux-x86\_64-2.7/libbrotli/dec/streams.o  
x86\_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D\_FORTIFY\_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/dictionary.c -o build/temp.linux-x86\_64-2.7/libbrotli/dec/dictionary.o  
x86\_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D\_FORTIFY\_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/enc/backward\_references.cc -o build/temp.linux-x86\_64-2.7/libbrotli/enc/backward\_references.o  
x86\_64-linux-gnu-gcc: error trying to exec ‘cc1plus’: execvp: No such file or directory  
error: command ‘x86\_64-linux-gnu-gcc’ failed with exit status 1

Command “/home/hynguyen/mitmproxy/venv/bin/python -u -c “import setuptools, tokenize; **file** =’/tmp/pip-build-hMw2KF/brotlipy/setup.py’;exec(compile(getattr(tokenize, ‘open’, open)( **file** ).read().replace(’\r\n’, ‘\n’), **file** , ‘exec’))” install --record /tmp/pip-72\_vTx-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/hynguyen/mitmproxy/venv/include/site/python2.7/brotlipy” failed with error code 1 in /tmp/pip-build-hMw2KF/brotlipy/

##### Any other comments? What have you tried so far?

I tried to reinstall virtualenv, update pip to latest version 8.1.2, or run the [dev.sh](http://dev.sh) with `sudo -H` but its keeping happen.

* * *

Mitmproxy Version: 0.18, clone from master  
Operating System: LinuxMint 18 (base on Ubuntu 16.04)

---

<div class="post-metadata">

**Author:** ![ndhydev](https://avatars.discourse-cdn.com/v4/letter/n/b77776/32.png) [@ndhydev](https://discourse.mitmproxy.org/u/ndhydev)\
**Post date:** [August 5, 2016, 2:02am UTC](https://discourse.mitmproxy.org/t/failed-building-wheel-for-brotlipy-error-message-when-install-using-dev-sh/128/2 "2016-08-05T02:02:31Z")

</div>

I findoud this is because missing g++.  
Solution is install g++ package:  
`sudo apt-get install g++`

---

<div class="post-metadata">

**Author:** ![mhils](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mitmproxy.org/mhils/32/7_2.png) [@mhils](https://discourse.mitmproxy.org/u/mhils)\
**Post date:** [August 9, 2016, 1:24am UTC](https://discourse.mitmproxy.org/t/failed-building-wheel-for-brotlipy-error-message-when-install-using-dev-sh/128/3 "2016-08-09T01:24:57Z")

</div>

Thanks for the report. This is fixed on [http://docs.mitmproxy.org/en/latest/](http://docs.mitmproxy.org/en/latest/) now, and will be part of [http://docs.mitmproxy.org/en/stable/](http://docs.mitmproxy.org/en/stable/) with the next release 🙂
