david-cortes / contextualbandits

Python implementations of contextual bandits algorithms
http://contextual-bandits.readthedocs.io
BSD 2-Clause "Simplified" License
750 stars 148 forks source link

pip install error on macosx:'random' file not found #24

Closed reneix closed 3 years ago

reneix commented 4 years ago

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>

david-cortes commented 4 years ago

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?

reneix commented 4 years ago

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

reneix commented 4 years ago

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_distribution dist6(1,6); // distribution in range [1, 6]

std::cout << dist6(rng) << std::endl;

}

david-cortes commented 4 years ago

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.

david-cortes commented 4 years ago

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.