在Ubuntu 14.04中添加Python.h和/或python3-dev的正确方法是什么?

时间:2016-07-31 07:44:24

标签: python ubuntu

在Ubuntu 14.04.4 LTS上我尝试使用默认的python 3.4.3安装courseara-dl并遇到错误:

src/MD2.c:31:20: fatal error: Python.h: No such file or directory
   #include "Python.h"
                  ^
  compilation terminated.
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

  ----------------------------------------
  Failed building wheel for pycrypto

我看到一些答案提到安装python3.4-dev来解决这个问题。但是存在依赖性错误:

The following packages have unmet dependencies:
 python3.4-dev : Depends: python3.4 (= 3.4.0-2ubuntu1) but 3.4.3-1ubuntu1~14.04.3 is to be installed
             Depends: libpython3.4-dev (= 3.4.0-2ubuntu1) but it is not going to be installed
             Depends: libpython3.4 (= 3.4.0-2ubuntu1) but 3.4.3-1ubuntu1~14.04.3 is to be installed
             Depends: libexpat1-dev but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

建议的解决方法是什么?我必须降级到python3.4.0吗?如果是这样,那么这样做的正确方法是什么?

当我运行dpkg -l | grep python 3时,我看到3.4.0和3.4.3。我应该试试apt-get uninstall 3.4.3吗?

ii  python3 3.4.0-0ubuntu2 amd64 interactive high-level object-oriented language (default python3 version)
ii  python3.4 3.4.3-1ubuntu1~14.04.3 amd64 Interactive high-level object-oriented language (version 3.4)

2 个答案:

答案 0 :(得分:1)

根据这个:http://packages.ubuntu.com/trusty/python3来自Ubuntu的官方默认python3版本14.04是3.4.0。根据这个:http://packages.ubuntu.com/trusty-updates/python3.4新版本来自更新仓库。发行版通常有一个基础仓库和一个更新的包与更新的包(Fedora也这样做)。不知怎的,你安装了这两个,可能是因为aptitude在某种程度上失败了。

这里有两个选项:

  1. 删除python3.4的更新包,以便您可以使用默认的python-dev。
  2. 删除python3的默认包,以便您可以使用更新python3.4-dev。
  3. 这里有另一种可能性,即python3.4-dev是使用错误的依赖构建的,或者在构建时收集了错误的依赖项,但是你的输出似乎暗示了其他。

    另一种可能性,这将是一个令人头疼的问题,如果apt正在努力正确识别python3.4-dev的依赖关系。

答案 1 :(得分:0)

我不记得我的Ubuntu中是如何得到python 3.4.3的,也许是通过ubuntu自动升级?

问题是libexpat1

apt-cache policy libexpat1
libexpat1:
  Installed: 2.1.0-4ubuntu1.1
  Candidate: 2.1.0-4ubuntu1.1
  Version table:
 *** 2.1.0-4ubuntu1.1 0
        100 /var/lib/dpkg/status
     2.1.0-4ubuntu1 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
python3-dev需要

版本2.1.0-4ubuntu1,并且已安装版本2.1.0-4ubntu1.1

我也删除了python3.4.3并且不得不重新安装python3(python3.4.0)。

之后,我可以安装python3-dev

我的python2存在类似的问题,其中我有python2.7.6但python-dev需要python2.7.5。因为我目前还没有真正使用它,所以我没有降级python2。

感谢@ matt-schuchard Matt Schuchard指出方向。我仍然不确定一切是否正确,但至少我能够安装python3-dev