pip install error on macosx:'random' file not found
reneix opened this issue · comments
pip install contextualbandits
returned error as follow, any advice? thx
......
Using cached
https://pypi.tuna.tsinghua.edu.cn/packages/bd/79/d6b51a83c84b047cf8012ef70f4dae62654e4ca5dfac792589e5709d71f1/contextualbandits-0.3.6.tar.gz (58 kB)
......
Building wheels for collected packages: contextualbandits
Building wheel for contextualbandits (PEP 517) ... error
.......
In file included from contextualbandits/_cy_utils.cpp:629:
contextualbandits/cy_cpp_helpers.cpp:3:10: fatal error: 'random' file not found
#include <random>
That's a really weird error - if I understand it correctly, it's complaining about not having the random
headers for C++. What kind of compiler are you using?
gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.1.0 (clang-902.0.39.2)
Target: x86_64-apple-darwin17.4.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
yes, but when I test as follow, it just worked...I will do more test, thx
gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch x86_64 -arch x86_64 -c test.cpp -o test.o -O3 -march=native -std=c++11
test.cpp
#include <random>
#include <iostream>
int main()
{
std::random_device dev;
std::mt19937 rng(dev());
std::uniform_int_distributionstd::mt19937::result_type dist6(1,6); // distribution in range [1, 6]
std::cout << dist6(rng) << std::endl;
}
No idea then, other than perhaps having to do with using GCC's headers with CLANG compiler. Perhaps your python setup is not using the compiler with those same arguments. Maybe you could try something like this:
export CC=clang
export CXX=clang++
pip install contextualbandits
(or replace clang->gcc, clang++->g++)
In order to make sure that the right compilation command is being issued, you could also download this repository and run:
python setup.py build_ext --inplace --force
Then you will see the full compilation commands starting with gcc/g++/clang/clang++ or whatever compiler is being used, and determine whether it has the same --with-gxx-include-dir
.
I recall BTW I've gotten such an error in the past when I've tried to compile some c++ file with a c compiler.