'pyconfig.h missing during "pip install cryptography"

I wanna set up scrapy cluster follow this link scrapy-cluster,Everything is ok before I run this command:

pip install -r requirements.txt

The requirements.txt looks like:

cffi==1.2.1
characteristic==14.3.0
ConcurrentLogHandler>=0.9.1
cryptography==0.9.1
...

I guess the above command means to install packages in requirements.txt.But I don't want it to specify the version,So I change it to this:

cat requirements.txt | while read line; do pip install ${line%%[>=]*} --user;done

When install cryptography,it gives me the error:

build/temp.linux-x86_64-2.7/_openssl.c:12:24:fatal error:pyconfig.h:No such file or directory 
#include <pyconfig.h>

I don't know how to solved this , I have tried a lot of methods ,but failed. my system is centos 7, and the version of python is 2.7.5(default). Besides, Is there any other scrapy frame which is appliable for a large number of urls . Thanks in advance



Solution 1:[1]

For Ubuntu, python2

apt-get install python-dev 

For Ubuntu, python3

apt-get install python3-dev

Solution 2:[2]

I have solved it by myself. for the default python of centos, there is only a file named pyconfg-64.h in usr/include/python2.7/,So run the command

yum install python-devel

Then it works.

Solution 3:[3]

for python3.6,

apt-get install python3.6-dev

and

apt-get install libssl-dev libffi-dev

Solution 4:[4]

i use python 2 on ubuntu and got the same problem when installing cryptography. after i run this command

apt-get install python-dev libssl-dev libffi-dev

then it works.

Solution 5:[5]

For Python 3.7 on Debian, the following works for me.

apt-get install python3.7-dev

and

apt-get install libssl-dev

You may also need:

apt-get install libffi-dev

Solution 6:[6]

On a Debian based distro (AntiX distro), together with apt-get install python3-dev, I also installed rust, to complete successfully the pip3 install cryptography command. So, I gave:

    $ sudo apt-get install build-essential curl python3-dev libssl-dev libffi-dev
    $ sudo curl https://sh.rustup.rs -sSf | sh

(Figure 1) | Rust installation

When prompted (Figure 1), type 1 and hit Enter on your keyboard. Once it completes, you have to give following commands:

    $ source $HOME/.cargo/env
    $ source ~/.profile
    $ pip3 install cryptography

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 k0nG
Solution 2 FancyXun
Solution 3 wolfgang
Solution 4 David
Solution 5 RayLuo
Solution 6 Riccardo Volpe