当前位置: 首页 > 面试题库 >

M2Crypto未安装在venv中,或者swig未定义__x86_64__,这破坏了针对OpenSSL的编译

乔凯康
2023-03-14
问题内容

我正在尝试将Python M2Crypto软件包安装到x86_64 RHEL
6.1计算机上的virtualenv中。此过程将调用swig,该失败将失败,并显示以下错误:

$ virtualenv -q --no-site-packages venv
$ pip install -E venv M2Crypto==0.20.2
Downloading/unpacking M2Crypto==0.20.2
  Downloading M2Crypto-0.20.2.tar.gz (412Kb): 412Kb  downloaded
  Running setup.py egg_info for package M2Crypto
Installing collected packages: M2Crypto
  Running setup.py install for M2Crypto
    building 'M2Crypto.__m2crypto' extension
    swigging SWIG/_m2crypto.i to SWIG/_m2crypto_wrap.c
    swig -python -I/usr/include/python2.6 -I/usr/include -includeall -o SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
    /usr/include/openssl/opensslconf.h:31: Error: CPP #error ""This openssl-devel package does not work your architecture?"". Use the -cpperraswarn option to continue swig processing.
    error: command 'swig' failed with exit status 1
    Complete output from command /home/lorin/venv/bin/python -c "import setuptools;__file__='/home/lorin/venv/build/M2Crypto/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-BFiNtU-record/install-record.txt --install-headers /home/lorin/venv/include/site/python2.6:

我已经通过RedHat的RPM软件包安装了OpenSSL 1.0.0。

/usr/include/openssl/opensslconf.h导致错误的部分如下所示:

#if defined(__i386__)
#include "opensslconf-i386.h"
#elif defined(__ia64__)
#include "opensslconf-ia64.h"
#elif defined(__powerpc64__)
#include "opensslconf-ppc64.h"
#elif defined(__powerpc__)
#include "opensslconf-ppc.h"
#elif defined(__s390x__)
#include "opensslconf-s390x.h"
#elif defined(__s390__)
#include "opensslconf-s390.h"
#elif defined(__sparc__) && defined(__arch64__)
#include "opensslconf-sparc64.h"
#elif defined(__sparc__)
#include "opensslconf-sparc.h"
#elif defined(__x86_64__)
#include "opensslconf-x86_64.h"
#else
#error "This openssl-devel package does not work your architecture?"
#endif

gcc定义了正确的变量:

$ echo | gcc -E -dM - | grep x86_64
#define __x86_64 1
#define __x86_64__ 1

但是明显的喝醉没有,因为这是失败的那行:

swig -python -I/usr/include/python2.6 -I/usr/include -includeall -o \
  SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i

有没有办法通过更改系统配置来解决此问题?M2Crypto被安装在virtualenv中,这是我无法控制的较大脚本的一部分,因此,避免与M2Crypto文件混在一起是一件好事。


问题答案:

M2Crypto提供了fedora_setup.sh脚本来处理Fedora / RL / CentOs版本的问题,但是pip当然对此一无所知。

pip安装失败后,它将下载的内容保留在venv / build / M2Crypto目录中。做这个:

cd <path-to-your-venv>/venv/build/M2Crypto
chmod u+x fedora_setup.sh
./fedora_setup.sh build
./fedora_setup.sh install

这在我的安装过程中起作用



 类似资料:
  • 我通过anaconda使用tensorflow cpu,在使用命令之后 gpu安装 我收到以下错误信息 File"",第1行,在runfile('C:/用户/g/桌面/大师-项目/高斯ROC示例/神经网络工作Example.py',wdir='C:/用户/g/桌面/大师-项目/高斯ROC示例') 文件“C:\ProgramData\Anaconda3\lib\site packages\spyde

  • > 自动对象t何时会被销毁? 它会被编译器安全地销毁吗? 为什么是未定义的行为?

  • 问题内容: 我知道Go中没有析构函数,因为从技术上讲没有类。这样,我用来执行与构造函数相同的功能。但是,有没有办法在终止的情况下创建某些东西来模仿析构函数,例如使用关闭文件?现在,我只是打电话给我,但这有点荒唐,我认为设计很差。正确的方法是什么? 问题答案: 在Go生态系统中,存在一种处理包装了宝贵(和/或外部)资源的对象的惯用语:一种专门用于释放该资源的特殊方法,通常通过该机制进行 显式 调用。

  • 这是因为一些只兼容客户端的脚本被打包进了服务端的执行脚本中去。 对于只适合在客户端运行的脚本,需要通过使用 process.client 变量来判断导入。 举个例子, 在你的 .vue 文件中: if (process.client) { require('external_library') }

  • 我正在尽我最大的努力,但我无法找到我的解决方案。 sugarcrm。尝试安装时,日志文件出现以下错误。 2017年11月1日星期三07:06:13[651035][无-][致命]创建表时出错:aos\u products\u quotes:查询失败:创建表aos\u products\u quotes(id char(36)不为NULL,名称文本NULL,date\u entered dateti

  • 问题内容: 我在页面上添加了一个简单的文件,该文件在和原型中添加了一些非常普通的常见任务功能。 经过反复试验,我发现向,添加任何函数,无论其名称或功能如何都会导致jQuery中的Javascript错误: 罪魁祸首? 我在attr:function {}声明中得到的第1056行的错误: 显然G.replace是未定义的。 很明显,有些事情我只是没有用原型制作而已,但我很痛苦地未能弄清楚它是什么。