pybind/python_example

error C2143 failed with exit status 2 when using pip install from Anaconda

Closed this issue · 6 comments

ktnr commented

I tried to pip install the repo in a conda environment and VS19. I got the following error. (I do have installed the "Microsoft Visual C++ 2015-2019 Redistributable - 14.25.28508" for x86 and x64.)

(pybindenv) C:\Users\Leo\Source\Repos\pybind>pip install .
Processing c:\users\leo\source\repos\pybind
Building wheels for collected packages: python-example
  Building wheel for python-example (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: 'C:\Users\Leo\Anaconda3\envs\pybindenv\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Leo\\AppData\\Local\\Temp\\pip-req-build-kagahwum\\setup.py'"'"'; __file__='"'"'C:\\Users\\Leo\\AppData\\Local\\Temp\\pip-req-build-kagahwum\\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\Leo\AppData\Local\Temp\pip-wheel-b07wghh7'
       cwd: C:\Users\Leo\AppData\Local\Temp\pip-req-build-kagahwum\
  Complete output (12 lines):
  running bdist_wheel
  running build
  running build_ext
  building 'python_example' extension
  creating build
  creating build\temp.win-amd64-3.8
  creating build\temp.win-amd64-3.8\Release
  creating build\temp.win-amd64-3.8\Release\src
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DVERSION_INFO="0.0.1" -Ic:\users\leo\appdata\local\temp\pip-req-build-kagahwum\.eggs\pybind11-2.5.0-py3.8.egg\pybind11\include -IC:\Users\Leo\Anaconda3\envs\pybindenv\include -IC:\Users\Leo\Anaconda3\envs\pybindenv\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" /EHsc /Tpsrc/main.cpp /Fobuild\temp.win-amd64-3.8\Release\src/main.obj /EHsc
  main.cpp
  src/main.cpp(36): error C2143: Syntaxfehler: Es fehlt ";" vor "Konstante"
  error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
  ----------------------------------------
  ERROR: Failed building wheel for python-example
  Running setup.py clean for python-example
Failed to build python-example
Installing collected packages: python-example
    Running setup.py install for python-example ... error
    ERROR: Command errored out with exit status 1:
     command: 'C:\Users\Leo\Anaconda3\envs\pybindenv\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Leo\\AppData\\Local\\Temp\\pip-req-build-kagahwum\\setup.py'"'"'; __file__='"'"'C:\\Users\\Leo\\AppData\\Local\\Temp\\pip-req-build-kagahwum\\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\Leo\AppData\Local\Temp\pip-record-uxtepnq8\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Users\Leo\Anaconda3\envs\pybindenv\Include\python-example'
         cwd: C:\Users\Leo\AppData\Local\Temp\pip-req-build-kagahwum\
    Complete output (12 lines):
    running install
    running build
    running build_ext
    building 'python_example' extension
    creating build
    creating build\temp.win-amd64-3.8
    creating build\temp.win-amd64-3.8\Release
    creating build\temp.win-amd64-3.8\Release\src
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DVERSION_INFO="0.0.1" -Ic:\users\leo\appdata\local\temp\pip-req-build-kagahwum\.eggs\pybind11-2.5.0-py3.8.egg\pybind11\include -IC:\Users\Leo\Anaconda3\envs\pybindenv\include -IC:\Users\Leo\Anaconda3\envs\pybindenv\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" /EHsc /Tpsrc/main.cpp /Fobuild\temp.win-amd64-3.8\Release\src/main.obj /EHsc
    main.cpp
    src/main.cpp(36): error C2143: Syntaxfehler: Es fehlt ";" vor "Konstante"
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'C:\Users\Leo\Anaconda3\envs\pybindenv\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Leo\\AppData\\Local\\Temp\\pip-req-build-kagahwum\\setup.py'"'"'; __file__='"'"'C:\\Users\\Leo\\AppData\\Local\\Temp\\pip-req-build-kagahwum\\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\Leo\AppData\Local\Temp\pip-record-uxtepnq8\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Users\Leo\Anaconda3\envs\pybindenv\Include\python-example' Check the logs for full command output.

(pybindenv) C:\Users\Leo\Source\Repos\pybind>

Any idea what the issue is?

I get the same error. I removed

#ifdef VERSION_INFO
    m.attr("__version__") = VERSION_INFO;
#else
    m.attr("__version__") = "dev";
#endif

from src/main.cpp and the error disappeared.

ktnr commented

Thanks for letting me know. It would be nice to know why. You also had the error with Anaconda and VS19, or is this a broader issue?

I had the same error with Anaconda and with a python installation without Anaconda using VS19 MSVC compiler. Remplacing the lines with m.attr("__version__") = "dev"; from src/main.cpp also works.

Abovementioned fixes work for me as well

I guess that this is no special Anaconda error. The problem seems to be, that a pre-processor variable does not have a defined datatype, such that VERSION_INFO="0.0.1" is not always considered to be a string (for instance in Visual Studio).

Please see this stackoverflow-article for a similar problem: https://stackoverflow.com/questions/240353/convert-a-preprocessor-token-to-a-string

For me it worked (VS2017) to write the following code:

#ifdef VERSION_INFO
    #define STRINGIFY(x) #x
    #define TOSTRING(x) STRINGIFY(x)
    m.attr("__version__") = TOSTRING(VERSION_INFO);
#else
    m.attr("__version__") = "dev";
#endif

This was resolved some time ago.