我目前正在使用optparse
包转换R脚本文件作为命令行可执行文件,它接受C风格的长标志和短标志。该程序在Ubuntu上运行。整个应用程序的执行由Python脚本控制,该脚本(1)首先使用os.system
在chmod
文件上调用script.R
,如下所示:
import os
os.system("chmod +x script.R; export PATH=$PATH:`pwd`")
然后我尝试使用os.system
在Python中再次执行该程序,如下所示:
program_call = "script.R --arg1 1"
os.system(program_call)
这将返回错误:
sh: 1: script.R: not found
32512
真正令人费解的是,这一天工作正常,现在却出错了。我正在和其他几个人一起开发这个应用程序,所以我想知道这是否可能是由于我的管理权限发生了变化。我已经验证所有必需的文件都包含在当前工作目录中。
答案 0 :(得分:1)
第一次调用PATH
时对os.system
环境变量的更改不会延续到第二次调用,因为它是一个单独的shell进程。如果您改为在Python中修改PATH
,它应该可以工作。尝试
os.environ['PATH'] += ":" + os.getcwd()
os.system("chmod +x script.R")
program_call = "script.R --arg1 1"
os.system(program_call)