安装pycurl时出现“无法运行curl-config:[Errno 2]没有这样的文件或目录”


185

我正在尝试通过以下方式安装pycurl:

sudo pip install pycurl

它下载得很好,但是当它运行setup.py时,我得到以下回溯:

Downloading/unpacking pycurl
  Running setup.py egg_info for package pycurl
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "/tmp/pip-build-root/pycurl/setup.py", line 563, in <module>
        ext = get_extension()
      File "/tmp/pip-build-root/pycurl/setup.py", line 368, in get_extension
        ext_config = ExtensionConfiguration()
      File "/tmp/pip-build-root/pycurl/setup.py", line 65, in __init__
        self.configure()
      File "/tmp/pip-build-root/pycurl/setup.py", line 100, in configure_unix
        raise ConfigurationError(msg)
    __main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "/tmp/pip-build-root/pycurl/setup.py", line 563, in <module>

    ext = get_extension()

  File "/tmp/pip-build-root/pycurl/setup.py", line 368, in get_extension

    ext_config = ExtensionConfiguration()

  File "/tmp/pip-build-root/pycurl/setup.py", line 65, in __init__

    self.configure()

  File "/tmp/pip-build-root/pycurl/setup.py", line 100, in configure_unix

    raise ConfigurationError(msg)

__main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory

任何想法为什么会这样以及如何解决它


您在使用Ubuntu吗?
Padraic Cunningham 2014年

我在OSX上通过SSH连接到Linux终端
user3688241 2014年

您要在哪里安装pycurl?
Padraic Cunningham 2014年

Answers:


463

在Debian上,我需要以下软件包来解决此问题

sudo apt install libcurl4-openssl-dev libssl-dev

4
这解决了我在Ubuntu 12.04(x64)和安装的Python3.4上的问题
Ilia Shakitko 2014年

23
谢谢,libssl-dev除了您之外,我还需要该包装。奇怪的是如何pip与系统软件包管理脱钩,但是甚至没有给出关于在一个非常普通的Linux发行版上可能缺少的软件包的提示。
米贾

1
我在Debian 9上需要libcurl4-openssl-dev和libssl-dev:sudo apt-get install libcurl4-openssl-dev libssl-dev
david

12
适用于Ubuntu 18.04 LTS。
John McGehee '18年

3
@JohnMcGehee,是的,也可以在WSL的Ubuntu 18.04.1 LTS上工作。
nephewtom

70

yum包管理器类似

yum install libcurl-devel

如果您使用dnf,请使用

dnf install libcurl-devel

以我为例,python-devel也丢失了,因此以下内容为我解决了这个问题:yum install libcurl-devel python-devel
sokhaty

19

就我而言,这解决了问题:

sudo apt-get install libssl-dev libcurl4-openssl-dev python-dev

这里解释


感谢python-dev包!我没有这个错误:src / pycurl.h:4:20:致命错误:Python.h:没有这样的文件或目录
Skullone

12

在Alpine linux中,您应该执行以下操作:

apk add curl-dev python3-dev libressl-dev

apk add curl-dev在docker python2.7-alpine镜像中对我来说足够了,谢谢!
ItayB

2

我在尝试使Shinken 2.0.3在Ubuntu上启动时遇到了相同的问题。最终,我进行了完全卸载,然后使用重新安装了Shinken pip -v。在清理过程中,它提到:

Warning: missing python-pycurl lib, you MUST install it before launch the shinken daemons

安装了apt-get,所有经纪人都按预期启动了:-)


2

那解决了我在Ubuntu 14.04上的问题:

apt-get安装libcurl4-gnutls-dev



0

就我而言,我一直收到相同的错误消息。我使用软呢帽。我通过以下方法解决了它:

sudo dnf install pycurl

这安装了我需要它运行的一切。


0

我在Mac上遇到了这个问题,这与该openssl软件包是所需的旧版本有关pycurlpycurl根据我的理解,可以使用其他SSL库而不是openssl。验证您所使用的SSL库并进行更新,因为它很可能解决了该问题。

我通过以下方式解决了这个问题:

  • 跑步 brew upgrade
  • pycurl-x.y.z.tar.gzhttp://pycurl.io/下载了最新的
  • 提取上面的包并在其中更改目录
  • python setup.py --with-openssl install如OpenSSL是我已经安装了库。如果你是SSL库或者是gnutls还是nss那么将不得不使用--with-gnutls--with-nss相应。您将可以在其github存储库中找到更多安装信息


0

请注意,如果您使用的是nodejs,则在编写本文时,它会依赖libssl 1.0。*-因此,安装备用SSL库将破坏您的nodejs安装。

安装不同SSL库的另一种解决方案是此答案中的此处发布:https : //stackoverflow.com/a/59927568/13564342来代替安装libcurl4-gnutls-dev

sudo apt install libcurl4-gnutls-dev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.