popgenmethods / momi2

Infer demographic history with the Moran model
GNU General Public License v3.0
47 stars 11 forks source link

Potential issue with gcc when installing momi on a Windows10 WSL #52

Open ChrystelleDelord opened 2 years ago

ChrystelleDelord commented 2 years ago

Dear all,

I am very sorry as this might appear as a very trivial issue. I am currently trying to install momi from pip in the WSL (windows subsystem for Linux) partition of my Windows 10 machine. I am not very at easy with Linux/c, but it seems to be a problem with the library gcc (which I downloaded from miniconda3) :

(base) sidon@DESKTOP-2P1JH95:~$ pip install momi
Collecting momi
  Using cached momi-2.1.19.tar.gz (301 kB)
Requirement already satisfied: cached_property>=1.3 in ./miniconda3/lib/python3.9/site-packages (from momi) (1.5.2)
Requirement already satisfied: autograd>=1.2.0 in ./miniconda3/lib/python3.9/site-packages (from momi) (1.3)
Requirement already satisfied: numpy>=1.9.0 in ./miniconda3/lib/python3.9/site-packages (from momi) (1.21.2)
Requirement already satisfied: networkx in ./miniconda3/lib/python3.9/site-packages (from momi) (2.6.3)
Requirement already satisfied: scipy in ./miniconda3/lib/python3.9/site-packages (from momi) (1.7.3)
Requirement already satisfied: pandas in ./miniconda3/lib/python3.9/site-packages (from momi) (1.2.5)
Requirement already satisfied: msprime in ./miniconda3/lib/python3.9/site-packages (from momi) (1.0.2)
Requirement already satisfied: matplotlib>=3.3 in ./miniconda3/lib/python3.9/site-packages (from momi) (3.4.3)
Requirement already satisfied: seaborn in ./miniconda3/lib/python3.9/site-packages (from momi) (0.11.2)
Requirement already satisfied: pysam in ./miniconda3/lib/python3.9/site-packages (from momi) (0.18.0)
Requirement already satisfied: future>=0.15.2 in ./miniconda3/lib/python3.9/site-packages (from autograd>=1.2.0->momi) (0.18.2)
Requirement already satisfied: pyparsing>=2.2.1 in ./miniconda3/lib/python3.9/site-packages (from matplotlib>=3.3->momi) (3.0.4)
Requirement already satisfied: pillow>=6.2.0 in ./miniconda3/lib/python3.9/site-packages (from matplotlib>=3.3->momi) (8.4.0)
Requirement already satisfied: python-dateutil>=2.7 in ./miniconda3/lib/python3.9/site-packages (from matplotlib>=3.3->momi) (2.8.2)
Requirement already satisfied: kiwisolver>=1.0.1 in ./miniconda3/lib/python3.9/site-packages (from matplotlib>=3.3->momi) (1.3.1)
Requirement already satisfied: cycler>=0.10 in ./miniconda3/lib/python3.9/site-packages (from matplotlib>=3.3->momi) (0.11.0)
Requirement already satisfied: six>=1.5 in ./miniconda3/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib>=3.3->momi) (1.16.0)
Requirement already satisfied: tskit>=0.3.5 in ./miniconda3/lib/python3.9/site-packages (from msprime->momi) (0.3.7)
Requirement already satisfied: newick>=1.3.0 in ./miniconda3/lib/python3.9/site-packages (from msprime->momi) (1.3.2)
Requirement already satisfied: demes<0.2 in ./miniconda3/lib/python3.9/site-packages (from msprime->momi) (0.1.2)
Requirement already satisfied: attrs>=20.3.0 in ./miniconda3/lib/python3.9/site-packages (from demes<0.2->msprime->momi) (21.4.0)
Requirement already satisfied: ruamel.yaml>=0.15.78 in ./miniconda3/lib/python3.9/site-packages (from demes<0.2->msprime->momi) (0.16.12)
Requirement already satisfied: jsonschema>=3.0.0 in ./miniconda3/lib/python3.9/site-packages (from tskit>=0.3.5->msprime->momi) (3.2.0)
Requirement already satisfied: svgwrite>=1.1.10 in ./miniconda3/lib/python3.9/site-packages (from tskit>=0.3.5->msprime->momi) (1.4.1)
Requirement already satisfied: setuptools in ./miniconda3/lib/python3.9/site-packages (from jsonschema>=3.0.0->tskit>=0.3.5->msprime->momi) (58.0.4)
Requirement already satisfied: pyrsistent>=0.14.0 in ./miniconda3/lib/python3.9/site-packages (from jsonschema>=3.0.0->tskit>=0.3.5->msprime->momi) (0.18.0)
Requirement already satisfied: pytz>=2017.3 in ./miniconda3/lib/python3.9/site-packages (from pandas->momi) (2021.3)
Building wheels for collected packages: momi
  Building wheel for momi (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/sidon/miniconda3/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-jnu45l8f/momi_a39199bccff54fc8b8f5eabc20b29f7e/setup.py'"'"'; __file__='"'"'/tmp/pip-install-jnu45l8f/momi_a39199bccff54fc8b8f5eabc20b29f7e/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-e0kurb4n
       cwd: /tmp/pip-install-jnu45l8f/momi_a39199bccff54fc8b8f5eabc20b29f7e/
  Complete output (51 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.9
  creating build/lib.linux-x86_64-3.9/momi
  copying momi/math_functions.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/demography.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/extract_sfs.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/demo_plotter.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/optimizers.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/confidence_region.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/events.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/sfs_stats.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/size_history.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/moran_model.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/read_vcf.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/util.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/compute_sfs.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/concatenate_datasets.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/__init__.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/likelihood.py -> build/lib.linux-x86_64-3.9/momi
  copying momi/demo_model.py -> build/lib.linux-x86_64-3.9/momi
  creating build/lib.linux-x86_64-3.9/momi/einsum2
  copying momi/einsum2/einsum2.py -> build/lib.linux-x86_64-3.9/momi/einsum2
  copying momi/einsum2/__init__.py -> build/lib.linux-x86_64-3.9/momi/einsum2
  creating build/lib.linux-x86_64-3.9/momi/data
  copying momi/data/sfs.py -> build/lib.linux-x86_64-3.9/momi/data
  copying momi/data/compressed_counts.py -> build/lib.linux-x86_64-3.9/momi/data
  copying momi/data/convert.py -> build/lib.linux-x86_64-3.9/momi/data
  copying momi/data/snps.py -> build/lib.linux-x86_64-3.9/momi/data
  copying momi/data/__init__.py -> build/lib.linux-x86_64-3.9/momi/data
  copying momi/data/configurations.py -> build/lib.linux-x86_64-3.9/momi/data
  copying momi/data/tensor.py -> build/lib.linux-x86_64-3.9/momi/data
  running build_ext
  building 'momi.convolution' extension
  creating build/temp.linux-x86_64-3.9
  creating build/temp.linux-x86_64-3.9/momi
  gcc -pthread -B /home/sidon/miniconda3/compiler_compat -Wl,--sysroot=/ -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -Wall -fPIC -O2 -isystem /home/sidon/miniconda3/include -fPIC -O2 -isystem /home/sidon/miniconda3/include -fPIC -I/home/sidon/miniconda3/lib/python3.9/site-packages/numpy/core/include -I/home/sidon/miniconda3/include/python3.9 -c momi/convolution.c -o build/temp.linux-x86_64-3.9/momi/convolution.o -fopenmp
  In file included from /home/sidon/miniconda3/lib/python3.9/site-packages/numpy/core/include/numpy/ndarraytypes.h:1969,
                   from /home/sidon/miniconda3/lib/python3.9/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
                   from /home/sidon/miniconda3/lib/python3.9/site-packages/numpy/core/include/numpy/arrayobject.h:4,
                   from momi/convolution.c:709:
  /home/sidon/miniconda3/lib/python3.9/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
     17 | #warning "Using deprecated NumPy API, disable it with " \
        |  ^~~~~~~
  gcc -pthread -B /home/sidon/miniconda3/compiler_compat -Wl,--sysroot=/ -shared -Wl,-rpath,/home/sidon/miniconda3/lib -Wl,-rpath-link,/home/sidon/miniconda3/lib -L/home/sidon/miniconda3/lib -Wl,-rpath,/home/sidon/miniconda3/lib -Wl,-rpath-link,/home/sidon/miniconda3/lib -L/home/sidon/miniconda3/lib build/temp.linux-x86_64-3.9/momi/convolution.o -o build/lib.linux-x86_64-3.9/momi/convolution.cpython-39-x86_64-linux-gnu.so -fopenmp
  /home/sidon/miniconda3/compiler_compat/ld: cannot find /lib64/libpthread.so.0
  /home/sidon/miniconda3/compiler_compat/ld: cannot find /usr/lib64/libpthread_nonshared.a
  collect2: error: ld returned 1 exit status
  error: command '/home/sidon/miniconda3/bin/gcc' failed with exit code 1
  ----------------------------------------
  ERROR: Failed building wheel for momi

Sorry for that long output! Did I miss anything obvious?

Thank you very much in advance,

Best regards Chrys

jackkamm commented 2 years ago

It looks like the compiler can't find /lib64/libpthread.so.0. It could be that it isn't installed, or it could be installed but the compiler can't find it due to a misconfiguration, e.g. with LD_LIBRARY_PATH.

I am not familiar enough with WSL (and running conda on it) to give an easy answer. Perhaps conda expects to find this file from the underlying system rather than providing it. One thing you could try is to do sudo apt install build-essential which I think would install the file on a Debian-like system.