Mac OS 10.8上的pycurl错误

2024-09-25 08:32:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我用pip安装了pycurl

oczml:~ acid$ sudo pip install pycurl
Password:
Downloading/unpacking pycurl
  Downloading pycurl-7.19.3.1.tar.gz (116kB): 116kB downloaded
  Running setup.py egg_info for package pycurl
    Using curl-config (libcurl 7.24.0)

Installing collected packages: pycurl
  Running setup.py install for pycurl
    Using curl-config (libcurl 7.24.0)
    building 'pycurl' extension
    clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -DPYCURL_VERSION="7.19.3.1" -DHAVE_CURL_SSL=1 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/pycurl.c -o build/temp.macosx-10.8-intel-2.7/src/pycurl.o
    clang: warning: argument unused during compilation: '-mno-fused-madd'
    src/pycurl.c:123:4: warning: "libcurl was compiled with SSL support, but configure could not determine which "    "library was used; thus no SSL crypto locking callbacks will be set, which may "    "cause random crashes on SSL requests" [-W#warnings]
    #  warning \
       ^
    1 warning generated.
    src/pycurl.c:123:4: warning: "libcurl was compiled with SSL support, but configure could not determine which "    "library was used; thus no SSL crypto locking callbacks will be set, which may "    "cause random crashes on SSL requests" [-W#warnings]
    #  warning \
       ^
    src/pycurl.c:1555:26: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
                int sockfd = PyInt_AsLong(fileno_result);
                    ~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/pycurl.c:1630:24: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
            int ret_code = PyInt_AsLong(result);
                ~~~~~~~~   ^~~~~~~~~~~~~~~~~~~~
    src/pycurl.c:2447:31: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
                            val = PyLong_AsLong(PyTuple_GET_ITEM(t, j));
                                ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/pycurl.c:3610:22: warning: implicit conversion loses integer precision: 'long' to '__darwin_suseconds_t' (aka 'int') [-Wshorten-64-to-32]
            tv.tv_usec = (long)(timeout*1000000.0);
                       ~ ^~~~~~~~~~~~~~~~~~~~~~~~~
    src/pycurl.c:4513:27: warning: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Wshorten-64-to-32]
        libcurl_version_len = strlen(libcurl_version);
                            ~ ^~~~~~~~~~~~~~~~~~~~~~~
    6 warnings generated.
    clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 build/temp.macosx-10.8-intel-2.7/src/pycurl.o -lcurl -o build/lib.macosx-10.8-intel-2.7/pycurl.so

Successfully installed pycurl
Cleaning up...

但是当我尝试导入pycurl时,我得到了以下错误:

^{pr2}$

Tags: tosrcsslintegerlongprecisionintpycurl
2条回答

我也有同样的问题,就这样解决了。 首先,我使用Python3和pip3,但同样的方法也适用于pip。在

{我在这里安装了最新的SSL。 您可以用旧的unix方式安装它,也就是下载gzip文件。在

tar -zxvf openssl-1.0.2n.tar.gz

(您的文件可能是其他版本) 然后运行:

^{pr2}$

(这仅适用于64位Mac架构。正常运行/配置) 然后:

make
make test
sudo make install

(使用sudo,因为它可能需要创建文件夹)。 现在您已经安装了OpenSSL。您需要安装PyCurl并告诉它您的OpenSSL头文件。我是这样做的:

pip3 install pycurl  global-option=build_ext  global-option="-L/{OpenSSL-install-directory}/lib"  global-option="-I/{OpenSSL-install-directory}/include"

将{OpenSSL install directory}替换为实际路径。我的是/usr/local/ssl

pip3 install pycurl  global-option=build_ext  global-option="-L/usr/local/ssl/lib"  global-option="-I/usr/local/ssl/include"

然后安装并工作。在

在拼接时使用了以下资源:

转载自SSL backend error when using OpenSSL

在阅读了他们的安装文件后,我通过设置一个环境变量并重新安装来解决我的问题

  • 删除现有pycurl安装

    pip卸载pycurl

  • 导出变量

    export PYCURL_SSL_LIBRARY=openssl

  • 安装pycurl

    pip安装pycurl

可能有其他的解决方案,但这对我的virtualenv和pip安装非常适合

相关问题 更多 >