gpt4 book ai didi

python - ReadTheDocs 问题与 sklearn/umap

转载 作者:行者123 更新时间:2023-12-05 06:53:30 25 4
gpt4 key购买 nike

我有一个我之前在 ReadTheDocs 上成功构建的包,但现在不再是这样了。我的导入如下:

import pandas as pd
import numpy as np
import scipy
import sys
from annoy import AnnoyIndex
from packaging import version
from scipy.spatial import cKDTree
from scipy.sparse import coo_matrix
from umap.umap_ import fuzzy_simplicial_set
from sklearn.neighbors import KDTree
from sklearn.neighbors import DistanceMetric
from sklearn.linear_model import Ridge

我通过在 Sphinx 中模拟导入来覆盖这些包。

autodoc_mock_imports = ['pandas','numpy','scipy','annoy','packaging','scipy.spatial','scipy.sparse','sklearn','sklearn.neighbors','sklearn.linear_model','umap','umap.umap_']

然而,尽管如此,我似乎在构建 ReadTheDocs 端时遇到了问题。似乎尽管被要求模拟 sklearn,但它正在尝试安装它但失败了。

Installed /home/docs/checkouts/readthedocs.org/user_builds/bbknn/envs/latest/lib/python3.7/site-packages/bbknn-1.4.0-py3.7.egg
Processing dependencies for bbknn==1.4.0
Searching for scikit-learn
Reading https://pypi.org/simple/scikit-learn/
Downloading https://files.pythonhosted.org/packages/db/e2/9c0bde5f81394b627f623557690536b12017b84988a4a1f98ec826edab9e/scikit-learn-0.24.0.tar.gz#sha256=076369634ee72b5a5941440661e2f306ff4ac30903802dc52031c7e9199ac640
Best match: scikit-learn 0.24.0
Processing scikit-learn-0.24.0.tar.gz
Writing /tmp/easy_install-1f85jnk0/scikit-learn-0.24.0/setup.cfg
Running scikit-learn-0.24.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-1f85jnk0/scikit-learn-0.24.0/egg-dist-tmp-mfl2n2vi
Partial import of sklearn during the build process.
Traceback (most recent call last):
File "/tmp/easy_install-1f85jnk0/scikit-learn-0.24.0/setup.py", line 201, in check_package_status
module = importlib.import_module(package)
File "/home/docs/checkouts/readthedocs.org/user_builds/bbknn/envs/latest/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'numpy'
Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/bbknn/envs/latest/lib/python3.7/site-packages/setuptools/sandbox.py", line 154, in save_modules
yield saved
File "/home/docs/checkouts/readthedocs.org/user_builds/bbknn/envs/latest/lib/python3.7/site-packages/setuptools/sandbox.py", line 195, in setup_context
yield
File "/home/docs/checkouts/readthedocs.org/user_builds/bbknn/envs/latest/lib/python3.7/site-packages/setuptools/sandbox.py", line 250, in run_setup
_execfile(setup_script, ns)
File "/home/docs/checkouts/readthedocs.org/user_builds/bbknn/envs/latest/lib/python3.7/site-packages/setuptools/sandbox.py", line 45, in _execfile
exec(code, globals, locals)
File "/tmp/easy_install-1f85jnk0/scikit-learn-0.24.0/setup.py", line 306, in <module>
File "/tmp/easy_install-1f85jnk0/scikit-learn-0.24.0/setup.py", line 292, in setup_package
File "/tmp/easy_install-1f85jnk0/scikit-learn-0.24.0/setup.py", line 227, in check_package_status
ImportError: numpy is not installed.
scikit-learn requires numpy >= 1.13.3.
Installation instructions are available on the scikit-learn website: http://scikit-learn.org/stable/install.html

为什么会这样?这可能与我在 setup.py 中要求依赖项的方式有关,它以某种方式绕过了模拟?

install_requires=['Cython','numpy','scipy','annoy','umap-learn','scikit-learn','packaging'],

我通过从 install_requires 中删除 umap-learnscikit-learn 来修复生成一​​个文档字符串,但这不是一个理想的解决方案。有人有什么东西吗?

最佳答案

根据一位乐于助人的用户的反馈,我最终得出了一个不那么棘手的解决方案。不幸的是,讨论因为一个无用的用户而擅离职守,他用 pip install -U numpy 回复,等我弄清楚,编辑他们的答案并要求我接受它。被拒绝后,答案和评论线程消失了。我什至不记得你的名字,乐于助人的用户,所以我不能把小费归功于你。

显然 ReadTheDocs 使用旧 pip,并且要求 pip>=19.0 使得 scikit-learn 无法从源安装。因此,我将该行添加到 docs/requirements.txt,我之前将其设置为 ReadTheDocs 需求文件。这带来了一些进展——现在不是 scikit-learn 提示 numpy,而是 numba。仍然,一些突触连接,我只是处理了通过 docs/requirements.txt 出现的任何依赖性问题,其最终内容是:

pip>=19.0
numpy
llvmlite==0.35.0

这让设置清除。但是,仅仅因为设置已清除,并不意味着 autodoc_mock_imports 可以出于任何原因被剥离。不确定这是为什么。

因此,来自 OP 的快速而肮脏的解决方案可能是解决此问题的最简单方法,其中您只需从 setup.pyinstall_requires 中删除内容。但是,如果您想要让它变得更干净,并且不需要专门的非功能性提交来构建文档,那么拥有一个 ReadTheDocs 需求文件并通过它安装 numpy 可能会解决很多问题。不知道为什么 llvmlite 也这么挑剔,并且在需求文件中以某种方式工作,但在其他情况下却没有,但最终做到了。

关于python - ReadTheDocs 问题与 sklearn/umap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65776380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com