LLNL / MuyGPyS

A fast, pure python implementation of the MuyGPs Gaussian process realization and training algorithm.
Other
25 stars 11 forks source link

unable to pip install muygpys #236

Closed RonCard closed 1 month ago

RonCard commented 4 months ago

I'm unable to pip install muygpys package on Windows. This is the error result:

Collecting muygpys Using cached muygpys-0.8.2-py3-none-any.whl.metadata (18 kB) Requirement already satisfied: numpy>=1.18.5 in c:\users\ronca\anaconda3\envs\bayesgp-env\lib\site-packages (from muygpys) (1.26.4) Collecting scipy<=1.7.3,>=1.4.1 (from muygpys) Using cached scipy-1.6.1.tar.gz (27.3 MB) Installing build dependencies ... done Getting requirements to build wheel ... done ERROR: Exception: Traceback (most recent call last): File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\cli\base_command.py", line 180, in exc_logging_wrapper status = run_func(*args) ^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\cli\req_command.py", line 245, in wrapper return func(self, options, args) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\commands\install.py", line 377, in run requirement_set = resolver.resolve( ^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\resolution\resolvelib\resolver.py", line 95, in resolve result = self._result = resolver.resolve( ^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_vendor\resolvelib\resolvers.py", line 546, in resolve state = resolution.resolve(requirements, max_rounds=max_rounds) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_vendor\resolvelib\resolvers.py", line 427, in resolve failure_causes = self._attempt_to_pin_criterion(name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_vendor\resolvelib\resolvers.py", line 239, in _attempt_to_pin_criterion criteria = self._get_updated_criteria(candidate) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_vendor\resolvelib\resolvers.py", line 230, in _get_updated_criteria self._add_to_criteria(criteria, requirement, parent=candidate) File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_vendor\resolvelib\resolvers.py", line 173, in _add_to_criteria if not criterion.candidates: ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_vendor\resolvelib\structs.py", line 156, in bool return bool(self._sequence) ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\resolution\resolvelib\found_candidates.py", line 155, in bool return any(self) ^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\resolution\resolvelib\found_candidates.py", line 143, in return (c for c in iterator if id(c) not in self._incompatible_ids) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\resolution\resolvelib\found_candidates.py", line 47, in _iter_built candidate = func() ^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\resolution\resolvelib\factory.py", line 211, in _make_candidate_from_link self._link_candidate_cache[link] = LinkCandidate( ^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\resolution\resolvelib\candidates.py", line 293, in init super().init( File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\resolution\resolvelib\candidates.py", line 156, in init self.dist = self._prepare() ^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\resolution\resolvelib\candidates.py", line 225, in _prepare dist = self._prepare_distribution() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\resolution\resolvelib\candidates.py", line 304, in _prepare_distribution return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\operations\prepare.py", line 525, in prepare_linked_requirement return self._prepare_linked_requirement(req, parallel_builds) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\operations\prepare.py", line 640, in _prepare_linked_requirement dist = _get_prepared_distribution( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\operations\prepare.py", line 71, in _get_prepared_distribution abstract_dist.prepare_distribution_metadata( File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\distributions\sdist.py", line 54, in prepare_distribution_metadata self._install_build_reqs(finder) File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\distributions\sdist.py", line 124, in _install_build_reqs build_reqs = self._get_build_requires_wheel() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\distributions\sdist.py", line 101, in _get_build_requires_wheel return backend.get_requires_for_build_wheel() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_internal\utils\misc.py", line 751, in get_requires_for_build_wheel return super().get_requires_for_build_wheel(config_settings=cs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_vendor\pyproject_hooks_impl.py", line 166, in get_requires_for_build_wheel return self._call_hook('get_requires_for_build_wheel', { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_vendor\pyproject_hooks_impl.py", line 321, in _call_hook raise BackendUnavailable(data.get('traceback', '')) pip._vendor.pyproject_hooks._impl.BackendUnavailable: Traceback (most recent call last): File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\site-packages\pip_vendor\pyproject_hooks_in_process_in_process.py", line 77, in _build_backend obj = import_module(mod_path) ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ronca\anaconda3\envs\bayesGP-env\Lib\importlib__init.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1310, in _find_and_load_unlocked File "", line 488, in _call_with_frames_removed File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "", line 995, in exec_module File "", line 488, in _call_with_frames_removed File "C:\Users\ronca\AppData\Local\Temp\pip-build-env-mel7v5ej\overlay\Lib\site-packages\setuptools__init.py", line 16, in import setuptools.version File "C:\Users\ronca\AppData\Local\Temp\pip-build-env-mel7v5ej\overlay\Lib\site-packages\setuptools\version.py", line 1, in import pkg_resources File "C:\Users\ronca\AppData\Local\Temp\pip-build-env-mel7v5ej\overlay\Lib\site-packages\pkg_resources\init__.py", line 73, in from pkg_resources.extern import appdirs ImportError: cannot import name 'appdirs' from 'pkg_resources.extern' (C:\Users\ronca\AppData\Local\Temp\pip-build-env-mel7v5ej\overlay\Lib\site-packages\pkg_resources\extern\init__.py)

Do you have any recommendations?

tcody-awetomaton commented 2 months ago

Also ran into this issue. This is actually coming from scipy version 1.6.1. You can get around this by pip installing with no dependencies, and then individually installing the dependencies separately (making sure to choose a different version of scipy).

pip install --upgrade --no-deps muygpys --> installing MuyGPyS without the required packages pip install numpy scipy scikit-learn bayesian-optimization --> installs all required packages

Disclaimer: All of the versions of scipy listed as requirements do not install correctly. Instead, I am defaulting to the most up to date version. I do this for the rest of the packages as well, as this fits the current (v0.8.2) package version requirements. I have not tried to see if this breaks anything.

igoumiri commented 1 month ago

Seems related to https://github.com/LLNL/MuyGPyS/issues/233. Thanks for the extra info!

bwpriest commented 1 month ago

Apologies, this was due to a dependency in the then-current version of hnswlib around the time of the v0.8.2 release. This has been fixed in the latest release.