david-cortes / contextualbandits

Python implementations of contextual bandits algorithms

Home Page:http://contextual-bandits.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.