undefined reference to `_imp___Py_NoneStruct'

http://www.ithao123.cn/content-5989645.html


最近在捣腾Python,主要是因为Google App Engine比较诱人。
用官方的SDK,一开始装的是2.6,然后每次都会有很多提示deprecated,发现2.6对2.5的更新比较大,而且貌似在我机器上记不住用户名和密码。由于本人密码有点复杂,于是就去找了个2.5来装。
CPython官方的已经没有提供直接渠道来下载2.5的MSI文件了(2010.10.31更新,官方可以下载到2.5.4版本,http://www.python.org/download/releases/2.5.4/),于是用了ActivePython,但接下来按网上的教程(这篇和这篇)安装时每次编译都报错。
教程的步骤是
1、先安装MinGW,注意把安装目录的bin目录加入到系统的path常量中
2、再去下载安装openssl和libgw32c并解压到MinGW的文件夹里
3、下载Python 2.5的SSL模块的源代码。把setup.py里第152行的地址从C:GnuWin32改为你安装MinGW的地址
4、如果机器上同时安装有Visual Studio 2003,可能需要强制使用MinGW编译。在Python安装文件夹的Libdistutils目录里新建一个文件distutils.cfg,在里面填入

[build]
compiler=mingw32
或者在下一步启动编译时传入一个
-c mingw32参数强制指定MinGW
5、运行setup.py install即可,有上一步的强制则是setup.py install -c mingw32

但我始终在最后一步的编译过程中报错,提示很多类似undefined reference to `_imp___Py_NoneStruct'的错误。Google搜索后发现原来是ActivePython自带的文件有问题(链接),本来应该有的libpython25.a不存在了,还好有教程可以自己重新生成一个。
1、找到python25.dll(一般是在system32文件夹里)
2、列出函数导出表,建议用pexport(链接1,链接2)
3、运行pexports.exe python25.dll > python25.def
4、运行
dlltool --dllname python25.dll --def python 25.def --output-lib libpython25.a生成文件
5、最后复制到Python的
libs文件夹里即可

再重新setup.py install即可成功安装
在Python中import ssl一下看看是不是没报错了~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值