在Windows上安装PyUblas

时间:2018-04-16 17:23:46

标签: python c++ windows visual-studio installation

我正在尝试在我的Windows机器上安装PyUblas。我有Visual Studio 2017社区版。我尝试使用

进行安装
pip install pyublas

但是收到以下错误消息:

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ipyublas/include "-Ic:\users\my name\appdata\local\programs\python\python36-32\lib\site-packages\numpy\core\include" "-Ic:\users\my name\appdata\local\programs\python\python36-32\lib\site-packages\numpy\core\include" "-Ic:\users\my name\appdata\local\programs\python\python36-32\lib\site-packages\numpy\core\include" "-Ic:\users\my name\appdata\local\programs\python\python36-32\include" "-Ic:\users\my name\appdata\local\programs\python\python36-32\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\cppwinrt" /EHsc /Tpsrc/wrapper/main.cpp /Fobuild\temp.win32-3.6\Release\src/wrapper/main.obj -Wno-sign-compare
    cl : Command line error D8021 : invalid numeric argument '/Wno-sign-compare'
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.12.25827\\bin\\HostX86\\x86\\cl.exe' failed with exit status 2

    ----------------------------------------
    Command ""c:\users\my name\appdata\local\programs\python\python36-32\python.exe" -u -c "import setuptools, tokenize;__file__='C:\\Users\\MYNAME~1\\AppData\\Local\\Temp\\pip-build-z0yc_qan\\PyUblas\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\MYNAME~1\AppData\Local\Temp\pip-2hhk4m35-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\MYNAME~1\AppData\Local\Temp\pip-build-z0yc_qan\PyUblas\

documentation页面上,还有一个使用Boost.Build的替代安装方法的两行描述;然而,它似乎已经过时了,或者至少我无法让它工作甚至无法理解它。我已经编译了Boost但不确定我应该做什么。似乎bjam已被b2取代,但运行并没有帮助。我也找不到任何有用的搜索谷歌或在这里。

编辑:

我已尝试从setup.py中删除有问题的行并按照TheGreatParker的建议手动安装。我还删除了第109行和第119行中对该标志的引用,因为它们引发了错误。现在我收到以下错误:

src/wrapper/main.cpp(16): fatal error C1083: Cannot open include file: 
'boost/python.hpp': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.12.25827\\bin\\HostX86\\x86\\cl.exe' failed with exit status 2error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.12.25827\\bin\\HostX86\\x86\\cl.exe' failed with exit status 2

我已经尝试将包含python.hpp的boost文件夹复制到安装文件夹中,但这似乎没有帮助。

EDIT2:

我重建了boost并确保configure.py创建的安装配置文件(siteconf.py)正确链接到boost目录。现在我收到以下错误:

LINK : fatal error LNK1181: cannot open input file 'boost_python36-vc141-mt-x32-1_67.lib'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.12.25827\\bin\\HostX86\\x86\\link.exe' failed with exit status 1181

我认为它想要的文件位于boost库目录中,对我来说是boost_1_67_0\stage\lib\。有问题的文件实际上被称为libboost_python36-vc141-mt-x32-1_67.lib所以我认为问题是它在开头缺少'lib'。但是,当我更改siteconf.py时:

BOOST_PYTHON_LIBNAME = ['libboost_python36-vc141-mt-x32-1_67']

我收到以下错误:

LINK : fatal error LNK1104: cannot open file 'boost_pythonPY_MAJOR_VERSIONPY_MINOR_VERSION-vc141-mt-x32-1_67.lib'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.12.25827\\bin\\HostX86\\x86\\link.exe' failed with exit status 1104

似乎无论哪种方式都无法访问此文件。我还尝试制作文件libboost_python36-vc141-mt-x32-1_67的副本,并将其重命名为安装所需的内容。在这种情况下,我得到了一大堆这类错误:

main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) struct boost::python::converter::registration const * __cdecl boost::python::converter::registry::query(struct boost::python::type_info)" (__imp_?query@registry@converter@python@boost@@YAPBUregistration@234@Utype_info@34@@Z)

直到安装退出并出现错误

build\lib.win32-3.6\pyublas\_internal.cp36-win32.pyd : fatal error LNK1120: 22 unresolved externals
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.12.25827\\bin\\HostX86\\x86\\link.exe' failed with exit status 1120

2 个答案:

答案 0 :(得分:0)

您可以尝试手动安装此软件包:

  1. 克隆源代码;

  2. 打开setup.py并删除添加此标志的python逻辑。 (在我的版本中,他们是第16行和第17行:

     StringListOption("CXXFLAGS", ["-Wno-sign-compare"],
        help="Any extra C++ compiler options to include"),
    
  3. 使用python setup.py install安装已更改setup.py

  4. 的软件包

    希望这会对你有所帮助。

答案 1 :(得分:0)

conda install pyublas

您需要安装anaconda / miniconda https://conda.io/docs/user-guide/install/index.html