首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么blogdown要通过normalizePath放置mamba命令?

为什么blogdown要通过normalizePath放置mamba命令?
EN

Stack Overflow用户
提问于 2022-10-06 22:13:48
回答 1查看 42关注 0票数 0

我正在做的事情是:

  1. 我有一个博客,它使用blogdown来呈现.Rmd文件,
  2. 博客中的一些代码片段都是用Python实现的。我使用的是reticulate

  1. ,我使用GitHub工作流来构建和发布博客,作为一个更大的网站的一部分。此工作流在miniconda.

中设置环境和包依赖项。

上次这是六个月前的事。在那个时候,它起了作用。现在,事实并非如此。为了进行更详细的调试,我似乎无法在本地复制该行为。

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

代码语言:javascript
复制
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块:

代码语言:javascript
复制
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输出的有用部分,以防有帮助:

代码语言:javascript
复制
     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

我发现了这个,但是他们的解决方法对我来说没有意义,因为我不使用造纸机:https://github.com/rstudio/reticulate/issues/1184

这方面的构建环境有点困难,但如果需要的话,我可能可以编写一个最小工作(/nonworking)示例lmk。

EN

回答 1

Stack Overflow用户

发布于 2022-11-08 21:48:40

I tracked this down to at least two bits of weird/buggy behavior in reticulate找到了一个解决办法:从香草迷你型转向曼巴福尔。

TL;DR似乎认为,无论最新的设置--miniconda@v2环境开始投入到meta/history中--都不包括create行,这是reticulate为了确定哪一个conda与哪个python一起使用而需要的,因为(1)它由于某种原因忽略了reticulate.conda_binary设置,(2)它使用一个更严格的正则表达式来解析历史文件的行,而不是它用来选择它们的regex。Mambaforge确实包含了create系列,所以reticulate很高兴。

代码语言:javascript
复制
      - 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 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73980511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档