Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pybind11/pybind11.h: No such file or directory - Previous solution not working #698

Closed
jshellen opened this issue Feb 24, 2017 · 10 comments
Closed

Comments

@jshellen
Copy link

jshellen commented Feb 24, 2017

I checked if similar question has already been answered in the FAQ. The short answer is YES. However, I tried to follow the solution and it did not work. I have been trying to fix this for a week now and I am forced to ask it here.

Issue description

//////////////////////////////////////
Recently, I have been trying to get pybind11 working on my Windows computer. The pybind11 works on my mac OS X without any errors. However, on Windows I receive this error.

C:\Users\Juha.CLion2016.2\system\cygwin_cmake\bin\cmake.exe --build C:\Users\Juha.CLion2016.2\system\cmake\generated\Test-9f0d7c2a\9f0d7c2a\Debug --target Test -- -j 4
Scanning dependencies of target Test
[ 50%] Building CXX object CMakeFiles/Test.dir/main.cpp.o
/cygdrive/c/Users/Juha/Desktop/C++/Test/main.cpp:2:31: fatal error: pybind11/pybind11.h: No such file or directory
compilation terminated.
make[3]: *** [CMakeFiles/Test.dir/build.make:63: CMakeFiles/Test.dir/main.cpp.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:68: CMakeFiles/Test.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:80: CMakeFiles/Test.dir/rule] Error 2
make: *** [Makefile:118: Test] Error 2

Tried solution

//////////////////////////////////////
I tried to make sure that the file pybind11.h could be found by CLion. So I used Windows search to locate pybind11. It turns out that pip install installed pybind11 in the following places:

  1. C:\Users\Juha\Documents\R\win-library\3.2\Rcpp\include\Rcpp\pybind11
  2. C:\Users\Juha\Anaconda2\include\pybind11
  3. C:\Users\Juha\Anaconda2\Library\lib\pybind11
  4. C:\Users\Juha\Anaconda2\Lib\pybind11

Each folder have the following files:

  1. __ init __.py
  2. __ init __.pyc
  3. _version.py
  4. _version.pyc
  5. attr.h
  6. cast.h
  7. chrono.h
  8. complex.h
  9. descr.h
  10. eigen.h
  11. eval.h
  12. functional.h
  13. numpy.h
  14. operators.h
  15. options.h
    16. pybind11.h
  16. pytypes.h
  17. stl.h
  18. stl_bind.h
  19. typeid.h

In each __ init __.py I hardcoded the path pointing to the folder where pybind11.h is located. So for each __ init __.py I hardcoded unique path pointing to the four different folders including pybind11.h. This did not solve the problem. I am clueless.

Reproducible example code

//////////////////////////////////////
In my project folder I have the following files:

  1. CMakeLists.txt
  2. main.cpp

CMakeLists.txt

    cmake_minimum_required(VERSION 3.6)
    project(Test)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    set(SOURCE_FILES main.cpp)
    add_executable(Test ${SOURCE_FILES})

main.cpp

 #include <iostream>
 #include "pybind11/pybind11.h"

int main() {

std::cout << "Hello, World!" << std::endl;
return 0;

}
@jagerman
Copy link
Member

See: http://pybind11.readthedocs.io/en/master/compiling.html#find-package-vs-add-subdirectory

Assuming the pybind cmake file has been properly installed somewhere cmake knows about, that should get you going.

@jshellen
Copy link
Author

Error:By not providing "Findpybind11.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "pybind11", but CMake did not find one.
Could not find a package configuration file provided by "pybind11" with any of the following names:
pybind11Config.cmake pybind11-config.cmake
Add the installation prefix of "pybind11" to CMAKE_PREFIX_PATH or set "pybind11_DIR" to a directory containing one of the above files. If "pybind11" provides a separate development package or SDK, be sure it has been installed.

@jagerman
Copy link
Member

Oh, pip doesn't give you the cmake files. The simplest solution is to check out the pybind11 source and include in with add_directory(pybind11), as in http://pybind11.readthedocs.io/en/master/compiling.html#building-with-cmake (It doesn't have to be inside your project directory, though that's fairly common).

Another solution is to do a proper pybind installation (which unlike the pip installation, also installs the cmake tools).

@jshellen
Copy link
Author

@jagerman Thanks so far! This is just quick update to acknowledge you that I am investigating this issue later today. I try to report here accurately what I discover along the way. Hopefully that will help someone else later.

@dean0x7d
Copy link
Member

@jshellen Have you tried cloning one the example repositories (python_example or cmake_example)? They both work on Windows and should provide a good starting point for development. Unless I'm missing some specific build requirement which isn't covered by those examples repositories?

@jagerman
Copy link
Member

@jshellen - did you get this working? Can I close the issue?

@mbednarski
Copy link

I have encourtered the same issue when tried to build fasttext in anaconda environment. For me I had to use
(py37)$ python -m pip install pybind11
instead of
(py37)$ pip install pybind11

Even though which pip show correct parh (pip in conda env, not system one).

@Salvia79
Copy link

Maybe you are supposed to install pybind11 with command like this pip install "pybind11[global]". I found this from https://pybind11.readthedocs.io/en/latest/installing.html#include-with-pypi and it works. Hope the tip helps.

@aino-gautam
Copy link

Maybe you are supposed to install pybind11 with command like this pip install "pybind11[global]". I found this from https://pybind11.readthedocs.io/en/latest/installing.html#include-with-pypi and it works. Hope the tip helps.

This seems to be the solution. Worked for me. But in general if you are using conda prefer to install core tools in the base rather then your own environment. That always works for other child environments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants