Bitbucket 的管道无法识别已安装的 python 库

Bitbucket's pipelines don't recognize the installed python libraries

Objective: 我正在尝试在 bitbucket 管道中生成 sphinx 文档。

问题:虽然有关管道的一切都正常,但 sphinx 似乎在查找某些模块时遇到问题:

WARNING: autodoc: failed to import module ... from module ...;
the following exception was raised: No module named 'pandas'

正如消息所说,是因为找不到pandas

这通常发生在sphinx 需要项目中调用的库但未安装的情况下。为此,我安装了 requirements.txt 中列出的所有模块,当然包括 pandas。但是,我仍然收到相同的警告。

结果: 这些警告使生成的 html 文件为空(只有模块名称可能出现在那里)。


有关管道的更多信息:我的管道有 3 个步骤:

  1. 安装 python 个模块:pip install -r requirements.txt,(成功完成)
  2. 生成 sphinx 文档,(成功完成,带有上述警告)
  3. rsync 结果到远程服务器,(与问题无关)

在这里你可以看到我的管道配置:bitbucket-pipelines.yml


故障排除 1:我已经在我的机器上使用完全相同的配置执行了这个项目,但我没有收到有关缺少模块的警告。如果我使用另一个缺少 pandas(例如)的 virtualenv,那么 sphinx 将开始抱怨它,正如我在上面显示的那样。

疑难解答2:对于此类问题的典型反应是检查conf.py中的sys.path。找不到模块(在我的例子中)与我在 conf.py 中添加 sys.path 的方式无关。如果是这样的话,sphinx 将在 all 模块上出现问题。

每个管道步骤 运行 都在一个单独的 docker 容器中,这就是第二步中缺少依赖项的原因。您需要在安装依赖项的同一步骤中 运行 sphinx,例如:

image: python:3.6.8

pipelines:
  branches:
    master:
        - step:
            name: doc generator
            trigger: manual
            caches:
              - pip
            script:
              - apt-get update && apt-get -y install python-sphinx

              # INSTALL YOUR DEPENDENCIES HERE
              - pip install -r requirements.txt  

              - pip install sphinx_rtd_theme
              - cd sphinxdocs
              - make clean
              - sphinx-apidoc -o . ..
              - make html
            artifacts:
              - sphinxdocs/_build/html/**