Reputation: 1623
I'm trying to "pip install PIL" on my amazon instance, but i keep getting this error, any suggestions?
Downloading/unpacking PIL Running setup.py egg_info for package PIL
WARNING: '' not a valid package name; please use only.-separated package names in setup.py Installing collected packages: PIL
Running setup.py install for PIL
WARNING: '' not a valid package name; please use only.-separated package names in setup.py
building '_imaging' extension
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DHAVE_LIBZ -IlibImaging -I/home/ec2-user/food-chute/foodchute/venv/include -I/usr/local/include -I/usr/include -I/usr/include/python2.6 -c _imaging.c -o build/temp.linux-x86_64-2.6/_imaging.o
_imaging.c:75:20: error: Python.h: No such file or directory
In file included from libImaging/Imaging.h:14,
from _imaging.c:77:
libImaging/ImPlatform.h:14:2: error: #error Sorry, this library requires support for ANSI prototypes.
libImaging/ImPlatform.h:17:2: error: #error Sorry, this library requires ANSI header files.
libImaging/ImPlatform.h:55:2: error: #error Cannot find required 32-bit integer type
In file included from _imaging.c:77:
libImaging/Imaging.h:90: error: expected specifier-qualifier-list before ‘INT32’
libImaging/Imaging.h:264: error: expected specifier-qualifier-list before ‘INT32’
libImaging/Imaging.h:395: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ImagingCRC32’
_imaging.c:124: error: expected specifier-qualifier-list before ‘PyObject_HEAD’
_imaging.c:129: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘PyTypeObject’
_imaging.c:143: error: expected specifier-qualifier-list before ‘PyObject_HEAD’
_imaging.c:151: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘PyTypeObject’
_imaging.c:154: error: expected specifier-qualifier-list before ‘PyObject_HEAD’
_imaging.c:160: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘PyTypeObject’
_imaging.c:165: error: expected specifier-qualifier-list before ‘PyObject_HEAD’
_imaging.c:170: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘PyTypeObject’
_imaging.c:172: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
_imaging.c: In function ‘_dealloc’:
_imaging.c:204: error: ‘ImagingObject’ has no member named ‘access’
error: command 'gcc' failed with exit status 1
Upvotes: 1
Views: 2332
Reputation: 17206
For me the solution to this problem was actually just to install python-devel.
Upvotes: 0
Reputation: 8295
The reason this is happening is because ec2 has gcc version 4.4.6 by default which can not compile the Python Imaging Library. However if you go on the ec2 website you can solve this issue by doing the following
While GCC 4.4.6 remains the default, we have included GCC 4.6.2, specifically for use on EC2 instances that support AVX. Run yum install gcc46 in order to get the packages. GCC 4.6 enables the Amazon Linux AMI to take advantage of the AVX support available on cc2.8xlarge instance types.
Source: http://aws.amazon.com/amazon-linux-ami/2012.03-release-notes/
Upvotes: 3