2013-09-30 59 views
1

我需要使用netifaces模块为我的项目,我无法设法得到它。 我通过easy_install的尝试,安装源代码,但每次我得到这个消息:Python netifaces模块窗口安装

error: Unable to find vcvarsall.bat

我在StackOverflow上读到此错误的答案,但我couldent理解......

有任何编译版本或netifaces的安装程序? 非常感谢!

编辑1: 安装Visual Studio C++后,我得到这个错误..任何帮助吗?

Searching for netifaces 
Reading https://pypi.python.org/simple/netifaces/ 
Reading http://alastairs-place.net/netifaces 
Reading http://alastairs-place.net/projects/netifaces 
Best match: netifaces 0.8 
Downloading http://alastairs-place.net/projects/netifaces/netifaces-0.8.tar.gz 
Processing netifaces-0.8.tar.gz 
Writing c:\users\daniel\appdata\local\temp\easy_install-gkcl9j\netifaces-0.8\setup.cfg 
Running netifaces-0.8\setup.py -q bdist_egg --dist-dir c:\users\daniel\appdata\local\temp\easy_install-gkcl9j\netifaces-0.8\egg-dist-tmp-wuxsjm 
netifaces.c 
netifaces.c(406) : error C2275: 'PyObject' : illegal use of this type as an expression 
     c:\python27\include\object.h(108) : see declaration of 'PyObject' 
netifaces.c(406) : error C2065: 'py_family' : undeclared identifier 
netifaces.c(407) : error C2275: 'PyObject' : illegal use of this type as an expression 
     c:\python27\include\object.h(108) : see declaration of 'PyObject' 
netifaces.c(407) : error C2065: 'list' : undeclared identifier 
netifaces.c(407) : error C2065: 'py_family' : undeclared identifier 
netifaces.c(407) : warning C4047: 'function' : 'PyObject *' differs in levels of indirection from 'int' 
netifaces.c(407) : warning C4024: 'PyDict_GetItem' : different types for formal and actual parameter 2 
netifaces.c(409) : error C2065: 'py_family' : undeclared identifier 
netifaces.c(411) : error C2065: 'list' : undeclared identifier 
netifaces.c(411) : warning C4047: '==' : 'int' differs in levels of indirection from 'void *' 
netifaces.c(411) : error C2065: 'list' : undeclared identifier 
netifaces.c(411) : error C2065: 'list' : undeclared identifier 
netifaces.c(411) : error C2065: 'list' : undeclared identifier 
netifaces.c(415) : error C2065: 'list' : undeclared identifier 
netifaces.c(416) : error C2065: 'list' : undeclared identifier 
netifaces.c(416) : warning C4047: '=' : 'int' differs in levels of indirection from 'PyObject *' 
netifaces.c(417) : error C2065: 'list' : undeclared identifier 
netifaces.c(419) : error C2065: 'py_family' : undeclared identifier 
netifaces.c(419) : error C2065: 'py_family' : undeclared identifier 
netifaces.c(419) : error C2065: 'py_family' : undeclared identifier 
netifaces.c(423) : error C2065: 'list' : undeclared identifier 
netifaces.c(424) : error C2065: 'py_family' : undeclared identifier 
netifaces.c(424) : warning C4047: 'function' : 'PyObject *' differs in levels of indirection from 'int' 
netifaces.c(424) : warning C4024: 'PyDict_SetItem' : different types for formal and actual parameter 2 
netifaces.c(424) : error C2065: 'list' : undeclared identifier 
netifaces.c(424) : warning C4047: 'function' : 'PyObject *' differs in levels of indirection from 'int' 
netifaces.c(424) : warning C4024: 'PyDict_SetItem' : different types for formal and actual parameter 3 
netifaces.c(425) : error C2065: 'list' : undeclared identifier 
netifaces.c(425) : error C2065: 'list' : undeclared identifier 
netifaces.c(425) : error C2065: 'list' : undeclared identifier 
netifaces.c(427) : error C2065: 'list' : undeclared identifier 
netifaces.c(427) : warning C4047: 'function' : 'PyObject *' differs in levels of indirection from 'int' 
netifaces.c(427) : warning C4024: 'PyList_Append' : different types for formal and actual parameter 1 
netifaces.c(716) : error C2275: 'PyObject' : illegal use of this type as an expression 
     c:\python27\include\object.h(108) : see declaration of 'PyObject' 
netifaces.c(716) : error C2065: 'dict' : undeclared identifier 
netifaces.c(718) : error C2065: 'dict' : undeclared identifier 
netifaces.c(718) : warning C4047: '=' : 'int' differs in levels of indirection from 'PyObject *' 
netifaces.c(720) : error C2065: 'dict' : undeclared identifier 
netifaces.c(730) : error C2065: 'dict' : undeclared identifier 
netifaces.c(730) : warning C4047: 'function' : 'PyObject *' differs in levels of indirection from 'int' 
netifaces.c(730) : warning C4024: 'PyDict_SetItemString' : different types for formal and actual parameter 1 
netifaces.c(732) : error C2065: 'dict' : undeclared identifier 
netifaces.c(732) : warning C4047: 'function' : 'PyObject *' differs in levels of indirection from 'int' 
netifaces.c(732) : warning C4024: 'PyDict_SetItemString' : different types for formal and actual parameter 1 
netifaces.c(734) : error C2065: 'dict' : undeclared identifier 
netifaces.c(734) : warning C4047: 'function' : 'PyObject *' differs in levels of indirection from 'int' 
netifaces.c(734) : warning C4024: 'PyDict_SetItemString' : different types for formal and actual parameter 1 
netifaces.c(740) : error C2065: 'dict' : undeclared identifier 
netifaces.c(740) : warning C4047: 'function' : 'PyObject *' differs in levels of indirection from 'int' 
netifaces.c(740) : warning C4024: 'add_to_family' : different types for formal and actual parameter 3 
error: Setup script exited with error: command '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' failed with exit status 2 
+0

你读过哪些问题?你从他们那里了解了些什么? –

+0

我知道我需要visual studio,因为python使用相同的编译器或类似的东西...也许更改vs80command var ...相信我,我问这个问题,因为我真的找不到任何答案。谢谢。 –

+0

在使用'easy_install'安装之前,您必须先安装Microsoft Visual C++ Express。您需要与用于构建您的Python版本相同版本的Visual C++。 –

回答

1

Netifaces是根据c99标准编写的。特别是代码使用混合的声明和代码。不幸的是,Microsofts编译器不遵守该标准,也不理解混合(编译* .c文件时)。我的解决方案是简单地将源文件重命名为'netifaces.cpp'。这样MS编译器就可以执行C++构建,允许混合声明和代码。对该文件进行重命名也使得有必要编辑'setup.py'来改变文件名。