WIN7(64位)安装Python模块py-radix

前言:

py-radix是用C语言实现的python模块,实现了radix算法(最长前缀匹配算法,用于路由查找)

py-radix模块下载:

我下载的最新的版本 py-radix-0.5.tar

py-radix模块安装:

1,解压文件,进入目录 \py-radix-0.5
2,打开cmd ,进入相应目录,执行setup.py
执行命令依次如下:python setup.py build
    python setup.py install
       如果中间不提示error,自然就是安装成功了。
3,测试,如下图所示,则表示成功:

错误问题和解决方法:

当然,我并没有如此幸运主要是遇到了两个问题:
1,第一: Unable to find vcvarsall.bat”错误。
     原因分析:定位错误发现在C:/Python27/Lib/distutils目录下.py文件中,进一步,发现“unable to find vcvarsall.bat”这句话出在svc9compiler.py中。它是在注册表中寻找到vs的目录,再去在vs目录下找vcvarsall.bat。如代码中所述,python27里面默认是vc9.0也就是vs2008所对应的C++编译器是msvc 9.0,也就是说如果你的机器上安装了VS2008应该不会出现这种错误,但是我的机器是安装的VS2010,其编译器版本是msvc 10.0,所以 它在注册表里面找不到键值返回None

productdir = Reg.get_value(r"%s/Setup/VC" % vsbase,

"productdir")

vsbase值为:Software/Microsoft/VisualStudio/9.0

所以解决问题的方法如下:

svc9compiler.py中

def find_vcvarsall(version) 用于查找vcvarsall.bat version就是版本号,实际上是9.0

vc_env = query_vcvarsall(VERSION, plat_spec)

VERSION = get_build_version() 因为python27自己是由vc9.0构建的所以VERSION是9.0

修改MSVCCompiler函数:

vc_env = query_vcvarsall(VERSION, plat_spec)

为:

vc_env = query_vcvarsall(10.0, plat_spec)

不过还有这句话:

if VERSION < 8.0:

raise DistutilsPlatformError("VC %0.1f is not supported by this module" % VERSION)

看来,python3.2中的distutils只支持vc8.0以上,即vs2005以上的编译器。


另外,网上也有说 进入CMD 并执行 :SET VS90COMNTOOLS=%VS100COMNTOOLS% ,经测试这种方法也是果断可以的,因为道理一样。另外,也有

通过安装mingw来解决的,未尝试,也不推荐,何必这么麻烦?

    第二:error C2373:"inet_ntop":重定义,不同的类型修饰符错误。

   原因分析:错误提示如下图:


提示给的详细,也就是说,inet_ntop":重定义了,但是类型修饰符不同,于是进入相应文件进行定位:

radix.h中的函数:


ws2tcpip.h中的函数:


radix.c中的函数:


用到inet_ntop地方都在这里了,问题貌似比较明显了,就是ws2tcpip.h中的第二个参数是PVOID类型,即void *类型,其他的则为const void *类型,所以

就是修改radix.x的相关函数了,可不要想着去修改系统的函数文件ws2tcpip.h,防止以后出现莫名奇妙的错误。改完了,经测试,错误还在,这是为什么呢?进入文件夹

发现\py-radix-0.5中还提供了inet_ntop.c文件来实现inet_ntop,而且radix.*就是引用的它的实现,看来inet_ntop的实现根本就没用到系统提供的,但是函数名字

又一致,参数类型不同,所以出现了错误。那么就找一个一劳永逸的方法吧,直接把\py-radix-0.5中用的inet_ntop函数改一个新的名字就可以了,经测试

果真好用,成功解决问题。

    其中inet_ntop.c中的inet_ntop实现如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FeelTouch Labs

一杯咖啡的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值