gpt4 book ai didi

Python subprocess.check_call 的工作方式与 bash 不同

转载 作者:行者123 更新时间:2023-12-01 06:51:48 25 4
gpt4 key购买 nike

我正在尝试使用 subprocess.check_call 通过 Python 运行 Rscript。

Rscript 非常简单,它只是检查 Rpackage 是否存在,如果不存在则安装它。

local({r <- getOption("repos")
r["CRAN"] <- "https://cloud.r-project.org/"
options(repos=r)
})

if (!require("glue")) install.packages("glue")

当我在 bash 中运行这样的命令时

Rscript packages.R

效果很好。

但是当我尝试使用 subprocess.check_call 运行它时

subprocess.check_call(f"Rscript packages.R",
shell=True,
env=self.env)

我遇到这样的错误:

* installing *source* package 'glue' ...
** package 'glue' successfully unpacked and MD5 sums checked
** libs
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fdebug-prefix-map=/build/r-base-3.3.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c glue.c -o glue.o
gcc: error trying to exec 'cc1': execvp: No such file or directory
/usr/lib/R/etc/Makeconf:132: recipe for target 'glue.o' failed
make: *** [glue.o] Error 1
ERROR: compilation failed for package 'glue'
* removing '/usr/local/lib/R/site-library/glue'

The downloaded source packages are in
'/tmp/Rtmpym9Dy9/downloaded_packages'

最佳答案

您显然通过提供自己的环境剥夺了PATH(的有用值(value))。如果您想像 shell 一样,只需对您继承的环境进行最少的必要更改。

关于Python subprocess.check_call 的工作方式与 bash 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58955077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com