安装用C++编写的Python包(leven)时出错:g++无法识别的命令行选项--输出lib



我一整天都在尝试安装这个Python库。它叫leven,你可以在这里找到它:https://pypi.python.org/pypi/leven/.

它是用C++编写的,我在尝试构建和安装它时遇到了错误。要构建和安装,我从命令行运行:python setup.py install。它运行其中的一部分,直到在运行命令时失败

C:Program Files (x86)CodeBlocksMinGWbing++.exe -mdll -static --entry _DllMain@12 --output-lib buildtemp.win32-2.7Releaselevenlib_levenshtein.a --def buildtemp.win32-2.7Releaseleven_levenshtein.def -s buildtemp.win32-2.7Releaseleven_levenshtein.o -LC:Python27libs -LC:Python27PCbuild -lpython27 -lmsvcr90 -o buildlib.win32-2.7leven_levenshtein.pyd
g++: error: unrecognized command line option '--output-lib'
g++: error: buildtemp.win32-2.7Releaselevenlib_levenshtein.a: No such file or directory
error: command 'C:\Program Files (x86)\CodeBlocks\MinGW\bin\g++.exe' failed with exit status 1

当我运行python setup.py安装时,整个过程是:

C:Python27Libsite-packages>python setup.py install
running install
running bdist_egg
running egg_info
writing requirements to leven.egg-inforequires.txt
writing leven.egg-infoPKG-INFO
writing top-level names to leven.egg-infotop_level.txt
writing dependency_links to leven.egg-infodependency_links.txt
reading manifest file 'leven.egg-infoSOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'leven.egg-infoSOURCES.txt'
installing library code to buildbdist.win32egg
running install_lib
running build_py
running build_ext
building 'leven._levenshtein' extension
C:Program Files (x86)CodeBlocksMinGWbingcc.exe -mdll -O -Wall -Ileven -IC:Python27include -IC:Python27PC -c leven/_levenshtein.cpp -o buildtemp.win32-2.7Releaseleven_levenshtein.o
leven/_levenshtein.cpp: In function 'void __Pyx_RaiseArgtupleInvalid(const char*, int, Py_ssize_t, Py_ssize_t, Py_ssize_t)':
leven/_levenshtein.cpp:1400:59: warning: unknown conversion type character 'z' in format [-Wformat]
leven/_levenshtein.cpp:1400:59: warning: format '%s' expects argument of type 'char*', but argument 5 has type 'Py_ssize_t {aka int}' [-Wformat]
leven/_levenshtein.cpp:1400:59: warning: unknown conversion type character 'z' in format [-Wformat]
leven/_levenshtein.cpp:1400:59: warning: too many arguments for format [-Wformat-extra-args]
writing buildtemp.win32-2.7Releaseleven_levenshtein.def
C:Program Files (x86)CodeBlocksMinGWbing++.exe -mdll -static --entry _DllMain@12 --output-lib buildtemp.win32-2.7Releaselevenlib_levenshtein.a --def buildtemp.win32-2.7Releaseleven_levenshtein.def -s buildtemp.win32-2.7Releaseleven_levenshtein.o -LC:Python27libs -LC:Python27PCbuild -lpython27 -lmsvcr90 -o buildlib.win32-2.7leven_levenshtein.pyd
g++: error: unrecognized command line option '--output-lib'
g++: error: buildtemp.win32-2.7Releaselevenlib_levenshtein.a: No such file or directory
error: command 'C:\Program Files (x86)\CodeBlocks\MinGW\bin\g++.exe' failed with exit status 1

这个问题的答案是用"-out implib=name"替换"--output lib name"。

我现在遇到了另一个问题。我需要在cygwinccompiler.py中将--output lib更改为-implib=name,这样当我调用该包的python setup.py-install时,它就会运行,但我在implib=和name之间一直有一个额外的空白,我认为这就是程序停止工作的原因。对这个问题有什么想法吗?

最新更新