您的位置:首页 > Web前端

undefined reference to `_imp___Py_NoneStruct'

2015-11-15 22:45 489 查看
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一下看看是不是没报错了~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: