【问题标题】:fatal error: openssl/err.h: No such file or directory - Python致命错误:openssl/err.h:没有这样的文件或目录 - Python
【发布时间】:2020-04-13 01:03:12
【问题描述】:

我尝试安装 M2Crypto,但无法安装,我遇到的错误如下: 我在一个虚拟的 miniconda 环境中。

building 'M2Crypto._m2crypto' extension
gcc -pthread -B /home/lcteen/miniconda3/envs/django/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/lcteen/miniconda3/envs/django/include/python3.7m -I/home/lcteen/Downloads/M2Crypto-0.35.2/SWIG -c SWIG/_m2crypto_wrap.c -o build/temp.linux-x86_64-3.7/SWIG/_m2crypto_wrap.o -DTHREADING -Wno-deprecated-declarations
SWIG/_m2crypto_wrap.c:3561:10: fatal error: openssl/err.h: No such file or directory
 3561 | #include <openssl/err.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.
error: command 'gcc' failed with exit status 1

我正在使用以下命令安装它:python setup.py install


pip安装时报错如下:

Collecting M2Crypto
  Using cached https://files.pythonhosted.org/packages/74/18/3beedd4ac48b52d1a4d12f2a8c5cf0ae342ce974859fba838cbbc1580249/M2Crypto-0.35.2.tar.gz
Building wheels for collected packages: M2Crypto
  Building wheel for M2Crypto (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/lcteen/miniconda3/envs/django/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-q5bgx0sr/M2Crypto/setup.py'"'"'; __file__='"'"'/tmp/pip-install-q5bgx0sr/M2Crypto/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-kjvnl1i1 --python-tag cp37
       cwd: /tmp/pip-install-q5bgx0sr/M2Crypto/
  Complete output (52 lines):
  running bdist_wheel
  running build
  running build_py
  copying M2Crypto/Engine.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/RC4.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/BIO.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/m2.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/m2urllib2.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/BN.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/util.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/Err.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/EC.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/DSA.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/EVP.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/m2urllib.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/httpslib.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/callback.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/m2xmlrpclib.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/RSA.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/threading.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/__init__.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/m2crypto.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/X509.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/ftpslib.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/Rand.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/AuthCookie.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/ASN1.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/SMIME.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/six.py -> build/lib.linux-x86_64-3.7/M2Crypto
  copying M2Crypto/DH.py -> build/lib.linux-x86_64-3.7/M2Crypto
  creating build/lib.linux-x86_64-3.7/M2Crypto/SSL
  copying M2Crypto/SSL/Cipher.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
  copying M2Crypto/SSL/ssl_dispatcher.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
  copying M2Crypto/SSL/timeout.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
  copying M2Crypto/SSL/SSLServer.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
  copying M2Crypto/SSL/cb.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
  copying M2Crypto/SSL/Context.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
  copying M2Crypto/SSL/Checker.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
  copying M2Crypto/SSL/TwistedProtocolWrapper.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
  copying M2Crypto/SSL/__init__.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
  copying M2Crypto/SSL/Session.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
  copying M2Crypto/SSL/Connection.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
  running build_ext
  building 'M2Crypto._m2crypto' extension
  creating build/temp.linux-x86_64-3.7
  creating build/temp.linux-x86_64-3.7/SWIG
  gcc -pthread -B /home/lcteen/miniconda3/envs/django/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/lcteen/miniconda3/envs/django/include/python3.7m -I/tmp/pip-install-q5bgx0sr/M2Crypto/SWIG -c SWIG/_m2crypto_wrap.c -o build/temp.linux-x86_64-3.7/SWIG/_m2crypto_wrap.o -Wno-deprecated-declarations -DTHREADING
  SWIG/_m2crypto_wrap.c:3561:10: fatal error: openssl/err.h: No such file or directory
   3561 | #include <openssl/err.h>
        |          ^~~~~~~~~~~~~~~
  compilation terminated.
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for M2Crypto
  Running setup.py clean for M2Crypto
Failed to build M2Crypto
Installing collected packages: M2Crypto
    Running setup.py install for M2Crypto ... error
    ERROR: Command errored out with exit status 1:
     command: /home/lcteen/miniconda3/envs/django/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-q5bgx0sr/M2Crypto/setup.py'"'"'; __file__='"'"'/tmp/pip-install-q5bgx0sr/M2Crypto/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-8ojxmrjt/install-record.txt --single-version-externally-managed --compile
         cwd: /tmp/pip-install-q5bgx0sr/M2Crypto/
    Complete output (55 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.7
    creating build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/Engine.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/RC4.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/BIO.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/m2.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/m2urllib2.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/BN.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/util.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/Err.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/EC.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/DSA.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/EVP.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/m2urllib.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/httpslib.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/callback.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/m2xmlrpclib.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/RSA.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/threading.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/__init__.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/m2crypto.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/X509.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/ftpslib.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/Rand.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/AuthCookie.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/ASN1.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/SMIME.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/six.py -> build/lib.linux-x86_64-3.7/M2Crypto
    copying M2Crypto/DH.py -> build/lib.linux-x86_64-3.7/M2Crypto
    creating build/lib.linux-x86_64-3.7/M2Crypto/SSL
    copying M2Crypto/SSL/Cipher.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
    copying M2Crypto/SSL/ssl_dispatcher.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
    copying M2Crypto/SSL/timeout.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
    copying M2Crypto/SSL/SSLServer.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
    copying M2Crypto/SSL/cb.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
    copying M2Crypto/SSL/Context.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
    copying M2Crypto/SSL/Checker.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
    copying M2Crypto/SSL/TwistedProtocolWrapper.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
    copying M2Crypto/SSL/__init__.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
    copying M2Crypto/SSL/Session.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
    copying M2Crypto/SSL/Connection.py -> build/lib.linux-x86_64-3.7/M2Crypto/SSL
    running build_ext
    building 'M2Crypto._m2crypto' extension
    creating build/temp.linux-x86_64-3.7
    creating build/temp.linux-x86_64-3.7/SWIG
    gcc -pthread -B /home/lcteen/miniconda3/envs/django/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/lcteen/miniconda3/envs/django/include/python3.7m -I/tmp/pip-install-q5bgx0sr/M2Crypto/SWIG -c SWIG/_m2crypto_wrap.c -o build/temp.linux-x86_64-3.7/SWIG/_m2crypto_wrap.o -Wno-deprecated-declarations -DTHREADING
    SWIG/_m2crypto_wrap.c:3561:10: fatal error: openssl/err.h: No such file or directory
     3561 | #include <openssl/err.h>
          |          ^~~~~~~~~~~~~~~
    compilation terminated.
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/lcteen/miniconda3/envs/django/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-q5bgx0sr/M2Crypto/setup.py'"'"'; __file__='"'"'/tmp/pip-install-q5bgx0sr/M2Crypto/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-8ojxmrjt/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.

我正在使用 python 3.7

我已经执行了以下命令,仍然无法安装:

sudo apt-get install python3-dev

有什么办法吗?


更新:

排查错误,发现下面的命令可以解决:

sudo apt-get install libssl-dev

我运行了它,我仍然无法安装它,但错误是不同的。错误:

SWIG/_m2crypto_wrap.c:31130:5: note: (near initialization for ‘SwigPyBuiltin___cbd_t_type.as_mapping’)
    SWIG/_m2crypto_wrap.c:31134:5: warning: excess elements in struct initializer
    31134 |     (objobjproc) 0,                           /* sq_contains */
          |     ^
    SWIG/_m2crypto_wrap.c:31134:5: note: (near initialization for ‘SwigPyBuiltin___cbd_t_type.as_mapping’)
    SWIG/_m2crypto_wrap.c:31135:5: warning: excess elements in struct initializer
    31135 |     (binaryfunc) 0,                           /* sq_inplace_concat */
          |     ^
    SWIG/_m2crypto_wrap.c:31135:5: note: (near initialization for ‘SwigPyBuiltin___cbd_t_type.as_mapping’)
    SWIG/_m2crypto_wrap.c:31136:5: warning: excess elements in struct initializer
    31136 |     (ssizeargfunc) 0,                         /* sq_inplace_repeat */
          |     ^
    SWIG/_m2crypto_wrap.c:31136:5: note: (near initialization for ‘SwigPyBuiltin___cbd_t_type.as_mapping’)
    SWIG/_m2crypto_wrap.c:31146:5: warning: initialization of ‘Py_ssize_t (*)(PyObject *)’ {aka ‘long int (*)(struct _object *)’} from incompatible pointer type ‘int (*)(PyObject *, Py_buffer *, int)’ {aka ‘int (*)(struct _object *, struct bufferinfo *, int)’} [-Wincompatible-pointer-types]
    31146 |     (getbufferproc) 0,                        /* bf_getbuffer */
          |     ^
    SWIG/_m2crypto_wrap.c:31146:5: note: (near initialization for ‘SwigPyBuiltin___cbd_t_type.as_sequence.sq_length’)
    SWIG/_m2crypto_wrap.c:31147:5: warning: initialization of ‘PyObject * (*)(PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _object *, struct _object *)’} from incompatible pointer type ‘void (*)(PyObject *, Py_buffer *)’ {aka ‘void (*)(struct _object *, struct bufferinfo *)’} [-Wincompatible-pointer-types]
    31147 |     (releasebufferproc) 0,                    /* bf_releasebuffer */
          |     ^
    SWIG/_m2crypto_wrap.c:31147:5: note: (near initialization for ‘SwigPyBuiltin___cbd_t_type.as_sequence.sq_concat’)
    SWIG/_m2crypto_wrap.c:31150:5: warning: initialization of ‘int (*)(PyObject *, Py_buffer *, int)’ {aka ‘int (*)(struct _object *, struct bufferinfo *, int)’} from incompatible pointer type ‘PyObject *’ {aka ‘struct _object *’} [-Wincompatible-pointer-types]
    31150 |     (PyObject*) 0,                            /* ht_name */
          |     ^
    SWIG/_m2crypto_wrap.c:31150:5: note: (near initialization for ‘SwigPyBuiltin___cbd_t_type.as_buffer.bf_getbuffer’)
    SWIG/_m2crypto_wrap.c:31151:5: warning: initialization of ‘void (*)(PyObject *, Py_buffer *)’ {aka ‘void (*)(struct _object *, struct bufferinfo *)’} from incompatible pointer type ‘PyObject *’ {aka ‘struct _object *’} [-Wincompatible-pointer-types]
    31151 |     (PyObject*) 0,                            /* ht_slots */
          |     ^
    SWIG/_m2crypto_wrap.c:31151:5: note: (near initialization for ‘SwigPyBuiltin___cbd_t_type.as_buffer.bf_releasebuffer’)
    SWIG/_m2crypto_wrap.c:30993:54: warning: missing braces around initializer [-Wmissing-braces]
    30993 | static PyHeapTypeObject SwigPyBuiltin___cbd_t_type = {
          |                                                      ^
    ......
    31150 |     (PyObject*) 0,                            /* ht_name */
          |     {
    31151 |     (PyObject*) 0,                            /* ht_slots */
    31152 | };
          | }
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/lcteen/miniconda3/envs/django/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-o4e0dlzd/M2Crypto/setup.py'"'"'; __file__='"'"'/tmp/pip-install-o4e0dlzd/M2Crypto/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-lntmgt5e/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.

(我没有把所有的错误,因为它很长)

【问题讨论】:

  • 阅读INSTALL.rst,您需要安装OpenSSL(以及其他)的开发文件。
  • 安装以下内容:openssl、libssl、python-dev、libssl-dev 等,但它不起作用,我得到同样的错误。
  • swig 的哪个版本?
  • 什么是swig?
  • 构建 M2Crypto 绝对必要的程序。你读过INSTALL.rst 还是尝试在 cmets 中重写它?

标签: python python-3.x openssl m2crypto


【解决方案1】:

问题的解决方法是运行以下命令:

conda install -c conda-forge m2crypto

【讨论】:

    猜你喜欢
    • 2012-10-13
    • 2018-10-02
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 2022-07-21
    • 2018-10-10
    • 2017-05-09
    • 2021-05-15
    相关资源
    最近更新 更多