title: I'm unable to install the CVXPY package for Python 3.6 in a virtual environment
body: <p>I am trying to install the CVXPY package on a virtual environment for Python 3.6, on Linux Ubuntu 16.04.</p>
  <p>I started by creating a virtual environment:</p>
  <pre><code>python3.6 -m venv tutorial-env
  </code></pre>
  <p>I then followed the instructions <a href="https://www.cvxpy.org/install/index.html#install-from-source" rel="nofollow noreferrer">here</a>, and installed the following dependencies manually:</p>
  <pre><code>pip install numpy
  pip install scipy
  </code></pre>
  <p>I then tried to download CVXPY:</p>
  <pre><code>pip install cvxpy
  </code></pre>
  <p>But I get the following error:</p>
  <pre><code>Collecting cvxpy
    Using cached cvxpy-1.1.7.tar.gz (1.0 MB)
    Installing build dependencies ... done
    Getting requirements to build wheel ... done
      Preparing wheel metadata ... done
  Requirement already satisfied: osqp&gt;=0.4.1 in ./tutorial-env/lib/python3.6/site-packages (from cvxpy) (0.6.1)
  Requirement already satisfied: scipy&gt;=1.1.0 in ./tutorial-env/lib/python3.6/site-packages (from cvxpy) (1.5.4)
  Requirement already satisfied: numpy&gt;=1.15 in ./tutorial-env/lib/python3.6/site-packages (from cvxpy) (1.19.4)
  Requirement already satisfied: ecos&gt;=2 in ./tutorial-env/lib/python3.6/site-packages (from cvxpy) (2.0.7.post1)
  Collecting scs&gt;=1.1.6
    Using cached scs-2.1.2.tar.gz (3.5 MB)
  Requirement already satisfied: future in ./tutorial-env/lib/python3.6/site-packages (from osqp&gt;=0.4.1-&gt;cvxpy) (0.18.2)
  Using legacy 'setup.py install' for scs, since package 'wheel' is not installed.
  Building wheels for collected packages: cvxpy
    Building wheel for cvxpy (PEP 517) ... error
    ERROR: Command errored out with exit status 1:
     command: /home/[username]/tutorial-env/bin/python3.6 /home/[username]/tutorial-env/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmpehj5rzra
         cwd: /tmp/pip-install-bu874zhr/cvxpy
    Complete output (426 lines):
    running bdist_wheel
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.6
    creating build/lib.linux-x86_64-3.6/cvxpy
    copying cvxpy/__init__.py -&gt; build/lib.linux-x86_64-3.6/cvxpy
    copying cvxpy/error.py -&gt; build/lib.linux-x86_64-3.6/cvxpy
    copying cvxpy/settings.py -&gt; build/lib.linux-x86_64-3.6/cvxpy
    [....cut for length...]
    running build_ext
    building '_cvxcore' extension
    creating build/temp.linux-x86_64-3.6
    creating build/temp.linux-x86_64-3.6/cvxpy
    creating build/temp.linux-x86_64-3.6/cvxpy/cvxcore
    creating build/temp.linux-x86_64-3.6/cvxpy/cvxcore/src
    creating build/temp.linux-x86_64-3.6/cvxpy/cvxcore/python
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Icvxpy/cvxcore/src/ -Icvxpy/cvxcore/python/ -Icvxpy/cvxcore/include/ -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -I/tmp/pip-build-env-7cso5slq/overlay/lib/python3.6/site-packages/numpy/core/include -c cvxpy/cvxcore/src/cvxcore.cpp -o build/temp.linux-x86_64-3.6/cvxpy/cvxcore/src/cvxcore.o -O3
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Icvxpy/cvxcore/src/ -Icvxpy/cvxcore/python/ -Icvxpy/cvxcore/include/ -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -I/tmp/pip-build-env-7cso5slq/overlay/lib/python3.6/site-packages/numpy/core/include -c cvxpy/cvxcore/src/LinOpOperations.cpp -o build/temp.linux-x86_64-3.6/cvxpy/cvxcore/src/LinOpOperations.o -O3
    cvxpy/cvxcore/src/LinOpOperations.cpp: In function ‘Tensor get_rmul_mat(const LinOp&amp;, int)’:
    cvxpy/cvxcore/src/LinOpOperations.cpp:717:7: warning: variable ‘arg_cols’ set but not used [-Wunused-but-set-variable]
       int arg_cols;
           ^
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Icvxpy/cvxcore/src/ -Icvxpy/cvxcore/python/ -Icvxpy/cvxcore/include/ -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -I/tmp/pip-build-env-7cso5slq/overlay/lib/python3.6/site-packages/numpy/core/include -c cvxpy/cvxcore/src/Utils.cpp -o build/temp.linux-x86_64-3.6/cvxpy/cvxcore/src/Utils.o -O3
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Icvxpy/cvxcore/src/ -Icvxpy/cvxcore/python/ -Icvxpy/cvxcore/include/ -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -I/tmp/pip-build-env-7cso5slq/overlay/lib/python3.6/site-packages/numpy/core/include -c cvxpy/cvxcore/python/cvxcore_wrap.cpp -o build/temp.linux-x86_64-3.6/cvxpy/cvxcore/python/cvxcore_wrap.o -O3
    cvxpy/cvxcore/python/cvxcore_wrap.cpp:178:21: fatal error: Python.h: No such file or directory
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    ----------------------------------------
    ERROR: Failed building wheel for cvxpy
  Failed to build cvxpy
  ERROR: Could not build wheels for cvxpy which use PEP 517 and cannot be installed directly
  </code></pre>
  <p><a href="https://pastebin.com/xBCci3DS" rel="nofollow noreferrer">Pastebin with the full error message.</a></p>
  <p>I have CVXPY installed and working on Python 3.5.2. I'm not sure why I'm having so much trouble getting it to work on Python 3.6.12. I tried to install the dependencies OSQP, ECOS and SCS manually before trying to install CVXPY, but SCS throws up the same sort of error (Failed building wheel for SCS).</p>
  <p>I have no idea what this means, and I can't make heads or tails of this. Any help is appreciated.</p>
  <p>EDIT: So I did what one of the comments suggested, and installed the following:</p>
  <pre><code>pip install wheel
  </code></pre>
  <p>But I'm still getting an error.</p>
  <p>I tried to install the dependency by cloning the git repository, but nothing changes.</p>
  <pre><code>(tutorial-env) [username]@CS:~$ git clone https://github.com/cvxgrp/cvxpy
  Cloning into 'cvxpy'...
  remote: Enumerating objects: 169, done.
  remote: Counting objects: 100% (169/169), done.
  remote: Compressing objects: 100% (124/124), done.
  remote: Total 58970 (delta 90), reused 75 (delta 41), pack-reused 58801
  Receiving objects: 100% (58970/58970), 168.74 MiB | 6.17 MiB/s, done.
  Resolving deltas: 100% (40842/40842), done.
  Checking connectivity... done.
  (tutorial-env) [username]@CS:~$ cd ~/cvxpy
  (tutorial-env) [username]@CS:~/cvxpy$ pip install -e .
  Obtaining file:///home/[username]/cvxpy
    Installing build dependencies ... done
    Getting requirements to build wheel ... done
      Preparing wheel metadata ... done
  Requirement already satisfied: numpy&gt;=1.15 in /home/[username]/tutorial-env/lib/python3.6/site-packages (from cvxpy==1.1.7) (1.19.4)
  Requirement already satisfied: osqp&gt;=0.4.1 in /home/[username]/tutorial-env/lib/python3.6/site-packages (from cvxpy==1.1.7) (0.6.1)
  Requirement already satisfied: ecos&gt;=2 in /home/[username]/tutorial-env/lib/python3.6/site-packages (from cvxpy==1.1.7) (2.0.7.post1)
  Collecting scs&gt;=1.1.6
    Using cached scs-2.1.2.tar.gz (3.5 MB)
  Requirement already satisfied: scipy&gt;=1.1.0 in /home/[username]/tutorial-env/lib/python3.6/site-packages (from cvxpy==1.1.7) (1.5.4)
  Requirement already satisfied: future in /home/[username]/tutorial-env/lib/python3.6/site-packages (from osqp&gt;=0.4.1-&gt;cvxpy==1.1.7) (0.18.2)
  Building wheels for collected packages: scs
    Building wheel for scs (setup.py) ... error
    ERROR: Command errored out with exit status 1:
     command: /home/[username]/tutorial-env/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '&quot;'&quot;'/tmp/pip-install-2yhxymp8/scs/setup.py'&quot;'&quot;'; __file__='&quot;'&quot;'/tmp/pip-install-2yhxymp8/scs/setup.py'&quot;'&quot;';f=getattr(tokenize, '&quot;'&quot;'open'&quot;'&quot;', open)(__file__);code=f.read().replace('&quot;'&quot;'\r\n'&quot;'&quot;', '&quot;'&quot;'\n'&quot;'&quot;');f.close();exec(compile(code, __file__, '&quot;'&quot;'exec'&quot;'&quot;'))' bdist_wheel -d /tmp/pip-wheel-xrktv9lx
         cwd: /tmp/pip-install-2yhxymp8/scs/
  
  [snipped for length]
  
  error: Command &quot;x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPYTHON -DCTRLC=1 -DDLONG=1 -DCOPYAMATRIX -DUSE_LAPACK -DHAVE_CBLAS -DHAVE_CBLAS -Iscs/include -Iscs/linsys -Iscs/linsys/cpu/direct/ -Iscs/linsys/external/amd -Iscs/linsys/external/dqlql -I/home/[username]/tutorial-env/lib/python3.6/site-packages/numpy/core/include -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -c src/scsmodule.c -o build/temp.linux-x86_64-3.6/src/scsmodule.o -O3&quot; failed with exit status 1
  
  ----------------------------------------
    ERROR: Failed building wheel for scs
    Running setup.py clean for scs
  Failed to build scs
  Installing collected packages: scs, cvxpy
      Running setup.py install for scs ... error
      ERROR: Command errored out with exit status 1:
       command: /home/[username]/tutorial-env/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '&quot;'&quot;'/tmp/pip-install-2yhxymp8/scs/setup.py'&quot;'&quot;'; __file__='&quot;'&quot;'/tmp/pip-install-2yhxymp8/scs/setup.py'&quot;'&quot;';f=getattr(tokenize, '&quot;'&quot;'open'&quot;'&quot;', open)(__file__);code=f.read().replace('&quot;'&quot;'\r\n'&quot;'&quot;', '&quot;'&quot;'\n'&quot;'&quot;');f.close();exec(compile(code, __file__, '&quot;'&quot;'exec'&quot;'&quot;'))' install --record /tmp/pip-record-yr_7wj14/install-record.txt --single-version-externally-managed --compile --install-headers /home/[username]/tutorial-env/include/site/python3.6/scs
           cwd: /tmp/pip-install-2yhxymp8/scs/
      Complete output (115 lines):
  
  [snipped for length]
  
   error: Command &quot;x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPYTHON -DCTRLC=1 -DDLONG=1 -DCOPYAMATRIX -DUSE_LAPACK -DHAVE_CBLAS -DHAVE_CBLAS -Iscs/include -Iscs/linsys -Iscs/linsys/cpu/direct/ -Iscs/linsys/external/amd -Iscs/linsys/external/dqlql -I/home/[username]/tutorial-env/lib/python3.6/site-packages/numpy/core/include -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -c src/scsmodule.c -o build/temp.linux-x86_64-3.6/src/scsmodule.o -O3&quot; failed with exit status 1
      ----------------------------------------
  ERROR: Command errored out with exit status 1: /home/[username]/tutorial-env/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '&quot;'&quot;'/tmp/pip-install-2yhxymp8/scs/setup.py'&quot;'&quot;'; __file__='&quot;'&quot;'/tmp/pip-install-2yhxymp8/scs/setup.py'&quot;'&quot;';f=getattr(tokenize, '&quot;'&quot;'open'&quot;'&quot;', open)(__file__);code=f.read().replace('&quot;'&quot;'\r\n'&quot;'&quot;', '&quot;'&quot;'\n'&quot;'&quot;');f.close();exec(compile(code, __file__, '&quot;'&quot;'exec'&quot;'&quot;'))' install --record /tmp/pip-record-yr_7wj14/install-record.txt --single-version-externally-managed --compile --install-headers /home/[username]/tutorial-env/include/site/python3.6/scs Check the logs for full command output.
  </code></pre>
  <p><a href="https://pastebin.com/kdJGd3Ub" rel="nofollow noreferrer">Pastebin with full error message</a>.</p>
  <p>I then tried to install the SCS dependency on its own first, but still, the same sort of error. <a href="https://pastebin.com/Rm0gKcQk" rel="nofollow noreferrer">Pastebin with full error message</a>.</p>