如何在Read the Docs的conda环境中运行setup.py?
在Read the Docs的conda环境中运行setup.py的解决方案
我之前也碰到过一模一样的问题——RTD的python.setup_py_install: true选项确实会直接绕过conda环境,改用它默认的虚拟环境,导致咱们用conda装的依赖完全派不上用场。不过有个很直观的解决思路:放弃这个选项,转而在conda环境搭建完成后手动执行项目安装命令。
下面是具体的配置步骤:
1. 调整readthedocs.yml配置
删掉python.setup_py_install: true,然后添加post_install步骤,让RTD在conda环境里安装你的calour项目。示例配置如下:
version: 2 build: os: ubuntu-22.04 tools: python: "3.10" # 这里要和environment.yml里的Python版本保持一致 conda: environment: environment.yml # 在conda环境初始化完成后,安装calour项目 post_install: - pip install .
2. 完善environment.yml文件
确保你的environment.yml包含所有项目核心依赖、pip专属依赖,还有文档构建需要的工具(比如sphinx相关包)。示例如下:
name: calour-docs channels: - conda-forge # 优先用conda-forge源,包的兼容性更好 dependencies: # 项目核心依赖(通过conda安装) - python=3.10 - numpy - scipy # 文档构建必需的依赖 - sphinx - sphinx-rtd-theme - pip # 确保conda环境里有pip可用 - pip: # 这里放只能通过pip安装的依赖 - some-pip-only-package # 文档相关的pip依赖也可以加在这里
为什么这样可行?
当RTD启动构建时,会先根据environment.yml创建并激活conda环境,自动安装所有指定的conda和pip依赖。之后post_install步骤会在这个已经配置好的conda环境里运行pip install .,把你的calour模块安装到环境中。这样Sphinx构建文档时,就能顺利导入calour模块——所有依赖都已经在conda环境里准备齐全了。
额外注意事项
- 一定要保证
readthedocs.yml里指定的Python版本和environment.yml里的完全一致,避免版本冲突导致构建失败。 - 如果你的项目用了
pyproject.toml而不是setup.py,这个方法同样适用,pip install .会自动识别项目的配置文件。
内容的提问来源于stack exchange,提问作者barvazim
相关产品推荐
相关产品推荐

