【问题标题】:Error installing Python package (leven) written in C++: g++ unrecognized command line option --output-lib安装用 C++ 编写的 Python 包(leven)时出错:g++ unrecognized command line option --output-lib
【发布时间】:2016-03-06 09:48:13
【问题描述】:

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

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

C:\Program Files (x86)\CodeBlocks\MinGW\bin\g++.exe -mdll -static --entry _DllMain@12 --output-lib build\temp.win32-2.7\Release\leven\lib_levenshtein.a --def build\temp.win32-2.7\Release\leven\_levenshtein.def -s build\temp.win32-2.7\Release\leven\_levenshtein.o -LC:\Python27\libs -LC:\Python27\PCbuild -lpython27 -lmsvcr90 -o build\lib.win32-2.7\leven\_levenshtein.pyd
g++: error: unrecognized command line option '--output-lib'
g++: error: build\temp.win32-2.7\Release\leven\lib_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 install 时,整个事情是:

C:\Python27\Lib\site-packages>python setup.py install
running install
running bdist_egg
running egg_info
writing requirements to leven.egg-info\requires.txt
writing leven.egg-info\PKG-INFO
writing top-level names to leven.egg-info\top_level.txt
writing dependency_links to leven.egg-info\dependency_links.txt
reading manifest file 'leven.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'leven.egg-info\SOURCES.txt'
installing library code to build\bdist.win32\egg
running install_lib
running build_py
running build_ext
building 'leven._levenshtein' extension
C:\Program Files (x86)\CodeBlocks\MinGW\bin\gcc.exe -mdll -O -Wall -Ileven -IC:\Python27\include -IC:\Python27\PC -c leven/_levenshtein.cpp -o build\temp.win32-2.7\Release\leven\_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 build\temp.win32-2.7\Release\leven\_levenshtein.def
C:\Program Files (x86)\CodeBlocks\MinGW\bin\g++.exe -mdll -static --entry _DllMain@12 --output-lib build\temp.win32-2.7\Release\leven\lib_levenshtein.a --def build\temp.win32-2.7\Release\leven\_levenshtein.def -s build\temp.win32-2.7\Release\leven\_levenshtein.o -LC:\Python27\libs -LC:\Python27\PCbuild -lpython27 -lmsvcr90 -o build\lib.win32-2.7\leven\_levenshtein.pyd
g++: error: unrecognized command line option '--output-lib'
g++: error: build\temp.win32-2.7\Release\leven\lib_levenshtein.a: No such file or directory
error: command 'C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin\\g++.exe' failed with exit status 1

【问题讨论】:

  • 如果它是用 C 编写的,为什么要使用 C++ 标签以及为什么要尝试用 g++ 编译它?
  • 对不起,它是用c++写的,经过仔细检查网站,它是用c++写的
  • 我用谷歌搜索,发现一个页面 (groups.google.com/forum/#!topic/mingwusers/x1aTs8xbJss) 建议将 --output-lib name 替换为 -out-implib=name
  • 谢谢。这有效,但没有解决我的问题。我仍然有一个错误:'g++: build\temp.wen32-2.7\Release\leven_levenshtein.o: No such file or directory' 我认为这是因为我尝试运行 **g++.exe -mdll ..... -out-implib=.. ** 手动,而不是更改我应该更改的生成文件。但问题是,我不知道它会在哪里。

标签: python c++ command-line compiler-errors mingw32


【解决方案1】:

这个问题的答案是将“--output-lib name”替换为“-out-implib=name”。

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

【讨论】:

  • 好的,我也能够解决这个问题,通过转到 Python27\Lib\disutils\cygwinccompiler.py > line225 > 替换:extra_preargs.extend(["--output-lib" , lib_file])extra_preargs.extend(["-out-implib=" + lib_file])
猜你喜欢
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
  • 2013-08-01
  • 2020-06-05
相关资源
最近更新 更多