【问题标题】:Why is blogdown putting a mamba command through normalizePath?为什么 blogdown 通过 normalizePath 放置 mamba 命令?
【发布时间】:2022-11-09 05:48:40
【问题描述】:

这就是我正在做的事情:

  1. 我有一个使用 blogdown 呈现 .Rmd 文件的博客。
  2. 博客中的一些代码 sn-ps 是 Python 的。我为此使用reticulate
  3. 我正在使用 GitHub 工作流来构建和发布博客作为更大网站的一部分。此工作流在miniconda 中设置环境和包依赖项。

    上一次运行是在六个月前。当时,它奏效了。现在,它没有。我似乎无法在本地复制该行为以进行更详细的调试。

    它似乎试图将 mamba 命令放入 normalizePath 而不是文件系统路径(www-main 是存储库的名称):

    conda activate www-main
    Rscript -e 'blogdown::build_site(local=FALSE, run_hugo=FALSE, build_rmd="content/blog/2020-08-28-api.Rmd")' 
      shell: /usr/bin/bash -l {0}
      env:
        CONDA_PKGS_DIR: /home/runner/conda_pkgs_dir
    Rendering content/blog/2020-08-28-api.Rmd...
    [...]
    Quitting from lines 401-410 (2020-08-28-api.Rmd) 
    Error in normalizePath(conda, winslash = "/", mustWork = TRUE) : 
      path[1]="# cmd: /usr/share/miniconda/condabin/mamba update --name www-main --file /home/runner/work/www-main/www-main/conda": No such file or directory
    Calls: local ... python_munge_path -> get_python_conda_info -> normalizePath
    Execution halted
    Error: Failed to render content/blog/2020-08-28-api.Rmd
    Execution halted
    

    2020-08-28-api.Rmd 的第 401-410 行是 Python 代码块:

    400 ```{python python-data, dev='svg'}
    401 import covidcast
    402 from datetime import date
    403 import matplotlib.pyplot as plt
    404 
    405 data = covidcast.signal("fb-survey", "smoothed_hh_cmnty_cli",
    406                         date(2020, 9, 8), date(2020, 9, 8),
    407                         geo_type="state")
    408 covidcast.plot_choropleth(data, figsize=(7, 5))
    409 plt.title("% who know someone who is sick, Sept 8, 2020")
    410 ```
    

    conda info 输出的有用位,以防有帮助:

         active environment : www-main
        active env location : /usr/share/miniconda/envs/www-main
                shell level : 1
           user config file : /home/runner/.condarc
     populated config files : /home/runner/.condarc
              conda version : 4.12.0
        conda-build version : not installed
             python version : 3.9.12.final.0
           virtual packages : __linux=5.15.0=0
                              __glibc=2.31=0
                              __unix=0=0
                              __archspec=1=x86_64
           base environment : /usr/share/miniconda  (writable)
          conda av data dir : /usr/share/miniconda/etc/conda
      conda av metadata url : None
               channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                              https://conda.anaconda.org/conda-forge/noarch
                              https://repo.anaconda.com/pkgs/main/linux-64
                              https://repo.anaconda.com/pkgs/main/noarch
                              https://repo.anaconda.com/pkgs/r/linux-64
                              https://repo.anaconda.com/pkgs/r/noarch
              package cache : /home/runner/conda_pkgs_dir
           envs directories : /usr/share/miniconda/envs
                              /home/runner/.conda/envs
                   platform : linux-64
                 user-agent : conda/4.12.0 requests/2.27.1 CPython/3.9.12 Linux/5.15.0-1020-azure ubuntu/20.04.5 glibc/2.31
                    UID:GID : 1001:121
                 netrc file : None
               offline mode : False
    

    为此的构建环境有点难,但如果需要,我可能可以组合一个最小工作(/非工作)示例,lmk

【问题讨论】:

    标签: anaconda r-markdown github-actions blogdown reticulate


    【解决方案1】:

    I tracked this down to at least two bits of weird/buggy behavior in reticulate 并找到了解决方法:从 vanilla miniconda 切换到 Mambaforge。

    TL;DR 似乎是任何古怪​​的 ubuntu-latest setup-miniconda@v2 环境开始放入 meta/history 不包括 create 行,这是 reticulate 需要什么才能弄清楚哪个 conda 去使用哪个python,因为(1)由于某种原因它忽略了reticulate.conda_binary设置,并且(2)它使用比它用来选择它们的正则表达式更严格的正则表达式来解析历史文件的行。曼巴锻造包括create 行,所以reticulate 很高兴。

          - uses: conda-incubator/setup-miniconda@v2
            with:
              python-version: 3.9
              activate-environment: www-main
              miniforge-variant: Mambaforge
              miniforge-version: latest
              use-mamba: true
              use-only-tar-bz2: true # (for caching support)
          - name: Update environment
            run: mamba env update -n www-main -f environment.yml 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      相关资源
      最近更新 更多