I am having trouble installing python-dev. It all started when I tried to install another Python package and got the error:

SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev.

I tried sudo apt-get install python-dev but got the error:

The following packages have unmet dependencies:
 python-dev : Depends: python2.7-dev (>= 2.7.3) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

So then I tried sudo apt-get install python2.7-dev and got the error:

The following packages have unmet dependencies:
 python2.7-dev : Depends: python2.7 (= 2.7.3-0ubuntu3) but 2.7.3-0ubuntu3.1 is to be installed
                 Depends: libpython2.7 (= 2.7.3-0ubuntu3) but 2.7.3-0ubuntu3.1 is to be installed

I have tried most everything in the post unmet dependencies. I am running Ubuntu 12.04 and I have everything updated. I have done apt-get clean and apt-get autoclean. I have tried apt-get -f install and all variations on that theme. I have cleaned up my PPA. I even tried using Aptitude, and though it did a lot of clean up, the result was the same.

I really want to be able to install python-dev. How can I make this happen? At this point, I am willing to consider extreme options, whatever they may be.

  • 1
    The problem isn't installing python-dev. The problem is getting src and include folders propogated to your virtualenv. Mar 29, 2013 at 18:28
  • Do you have any suggestions there? I was using --system-site-packages. Mar 29, 2013 at 18:38
  • 1
    Read this: pythoncentral.org/… it explains how it actually works. Mar 29, 2013 at 18:42
  • @CallmeV This is a great post, but sadly doesn't address the problem I'm having getting Python-Dev to install. Jun 15, 2013 at 16:52
  • 1
    @theJollySin - what version of ubuntu are you using? Please disable all PPAs and run sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade. Paste the output to paste.ubuntu.com
    – fossfreedom
    Jun 16, 2013 at 9:49

4 Answers 4


This bit:

 python2.7-dev : Depends: python2.7 (= 2.7.3-0ubuntu3) but 2.7.3-0ubuntu3.1 is to be installed

suggests that you are using some mismatched repositories, or have some apt-pins in place keeping the version dependencies from lining up. I think, specifically, python-2.7 2.7.3-0ubuntu3.1 is in the Precise-proposed repository and the 2.7.3-0ubuntu3 version is in Precise/main proper, so you may be preferring -proposed for some but not all packages.

Can you edit your question to include the output of:

apt-cache policy python2.7-dev
apt-cache policy python2.7

and maybe:

apt-cache show python2.7


Reading the apt-cache output from your pastebin, it looks like you have the python2.7 2.7.3-0ubuntu3.1 from precise-updates/main installed, but python2.7-dev is from precise/main. I think your install media or an earlier "apt-get update" included the precise-updates repository, but it's not in your current sources.list.

I think you'll be able to get the install going after adding precise-updates and then apt-get update.

echo "deb http://us.archive.ubuntu.com/ubuntu/ precise-updates main restricted" | sudo tee -a /etc/apt/sources.list.d/precise-updates.list
sudo apt-get update
sudo apt-get install python2.7-dev

You shouldn't install numpy with pip, use the package Ubuntu provides:

dennis@koekblik:~$ apt-cache show python-numpy
Package: python-numpy
Priority: optional
Section: python
Installed-Size: 7616

As to your actual problem: try installing python2.7-dev. It will likely fail but should give you a better error message.

  • Okay, your first statement: there are other packages (like gdal) that would be much easier if I could install through PIP. Your second point, I can try that and see what happens. Thanks. Mar 29, 2013 at 17:52
  • 1
    I agree that pip is a useful tool, but please stick to Ubuntu packages as much as possible, much easier for updating. And if you use pip to install packages, you might want to create yourself a virtualenv so you don't need to install as root into /usr/local. Mar 29, 2013 at 17:56
  • Okay, I will try to stick to Ubuntu packages. But this whole problem started because I can get numpy working fine, but can't get numpy imported inside a virtualenv. Having a working virtualenv system for Python development is definitely the goal. Thanks again. Mar 29, 2013 at 18:00
  • 1
    That's a different question though :) Use a virtualenv with --system-site-packages to get access to what's installed via apt. Mar 29, 2013 at 18:01

fastest solution:

  • Install (sudo apt-get install synaptic) Synaptic Package Manager and start it
  • Click on Settings-Repositories
  • Select Download from: Main Server
  • Click Close then click on Reload.
  • Mark python-dev for installation and Synaptic will also mark all dependencies of python-dev (libexpat1-dev, libssl-dev, libssl-doc, python2.7-dev, zlib1g-dev).

I have just resolved the same problem on freshly installed Ubuntu x86 12.04.3.


For those that encounter this problem, first try and run

sudo apt-get update

and try to install again

  • It is not necessary to give such introduction. Just give your answer. As per my experience, not always unmet dependency can be solved by using sudo apt-get update Mar 19, 2016 at 10:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .