我正在做的事情是:
reticulate,,
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 halted2020-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我发现了这个,但是他们的解决方法对我来说没有意义,因为我不使用造纸机:https://github.com/rstudio/reticulate/issues/1184
path[1]的一个完全合理的价值,不像我的:How can I tell R where the conda environment is via a docker image?这方面的构建环境有点困难,但如果需要的话,我可能可以编写一个最小工作(/nonworking)示例lmk。
发布于 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很高兴。
- 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 https://stackoverflow.com/questions/73980511
复制相似问题