弄了大半天,問題挺玄學的,可以先檢查是否安裝cython(pip install cython)。然而我的安裝了cython還是存在問題。
報錯如下:
ERROR: Complete output from command 'd:\anaconda\envs\tensorflow\python.exe' -u -c 'import setuptools, tokenize;__file__='"'"'C:\\Users\\18882\\AppData\\Local\\Temp\\pip-req-build-oahhefc0\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\18882\AppData\Local\Temp\pip-wheel-5zhy9voy' --python-tag cp36:
ERROR: running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-3.6
creating build\lib.win-amd64-3.6\pydensecrf
copying pydensecrf\utils.py -> build\lib.win-amd64-3.6\pydensecrf
copying pydensecrf\__init__.py -> build\lib.win-amd64-3.6\pydensecrf
running build_ext
building 'pydensecrf.eigen' extension
creating build\temp.win-amd64-3.6
creating build\temp.win-amd64-3.6\Release
creating build\temp.win-amd64-3.6\Release\pydensecrf
D:\VS2017\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ipydensecrf/densecrf/include -Ipydensecrf -Id:\anaconda\envs\tensorflow\include -Id:\anaconda\envs\tensorflow\include -ID:\VS2017\VC\Tools\MSVC\14.16.27023\ATLMFC\include -ID:\VS2017\VC\Tools\MSVC\14.16.27023\include "-ID:\Windows Kits\10\include\10.0.17763.0\ucrt" "-ID:\Windows Kits\10\include\10.0.17763.0\shared" "-ID:\Windows Kits\10\include\10.0.17763.0\um" "-ID:\Windows Kits\10\include\10.0.17763.0\winrt" "-ID:\Windows Kits\10\include\10.0.17763.0\cppwinrt" /EHsc /Tppydensecrf/eigen.cpp /Fobuild\temp.win-amd64-3.6\Release\pydensecrf/eigen.obj
eigen.cpp
c:\users\18882\appdata\local\temp\pip-req-build-oahhefc0\pydensecrf\densecrf\include\eigen\src/Core/VectorBlock.h(120): error C2373: “Eigen::DenseBase<Derived>::segment”: 重定義; 不同的類型修飾符
c:\users\18882\appdata\local\temp\pip-req-build-oahhefc0\pydensecrf\densecrf\include\eigen\src/Core/DenseBase.h(291): note: 參見“Eigen::DenseBase<Derived>::segment”的聲明
c:\users\18882\appdata\local\temp\pip-req-build-oahhefc0\pydensecrf\densecrf\include\eigen\src/Core/VectorBlock.h(121): error C2447: “{”: 缺少函數標題(是否是老式的形式表?)
c:\users\18882\appdata\local\temp\pip-req-build-oahhefc0\pydensecrf\densecrf\include\eigen\src/Core/VectorBlock.h(152): error C2373: “Eigen::DenseBase<Derived>::head”: 重定義;不同的類型修飾符
c:\users\18882\appdata\local\temp\pip-req-build-oahhefc0\pydensecrf\densecrf\include\eigen\src/Core/DenseBase.h(294): note: 參見“Eigen::DenseBase<Derived>::head”的聲明
c:\users\18882\appdata\local\temp\pip-req-build-oahhefc0\pydensecrf\densecrf\include\eigen\src/Core/VectorBlock.h(153): error C2447: “{”: 缺少函數標題(是否是老式的形式表?)
c:\users\18882\appdata\local\temp\pip-req-build-oahhefc0\pydensecrf\densecrf\include\eigen\src/Core/VectorBlock.h(184): error C2373: “Eigen::DenseBase<Derived>::tail”: 重定義;不同的類型修飾符
c:\users\18882\appdata\local\temp\pip-req-build-oahhefc0\pydensecrf\densecrf\include\eigen\src/Core/DenseBase.h(297): note: 參見“Eigen::DenseBase<Derived>::tail”的聲明
c:\users\18882\appdata\local\temp\pip-req-build-oahhefc0\pydensecrf\densecrf\include\eigen\src/Core/VectorBlock.h(185): error C2447: “{”: 缺少函數標題(是否是老式的形式表?)
error: command 'D:\\VS2017\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
----------------------------------------
ERROR: Failed building wheel for pydensecrf
網上出問題的大多是python3.6版本,有說3.5沒問題的,但是我就是3.5,也有說setuptools沒更新的
pip install –upgrade setuptools
有通過更新pydensecrf環境解決的
conda install -c conda-forge pydensecrf
還有說需要安裝vsc++tool的(https://go.microsoft.com/fwlink/?LinkId=691126)
以上方法我都試了。但是還是不行,最後去這個網址下載bz2格式的對應我的安裝環境的包用(conda install f:\tools\pydensecrf-1.0rc3-py35_0.tar.bz2)安裝成功。