我希望使用子流程包从另一个python脚本executed.py
执行python脚本trigger.py
。必须在与executed_env
和trigger_env
).不同的conda环境中运行executed.py
。做这件事的最好方法是什么?我当前的trigger.py
代码是:
command = "python executed.py --option1 -dir /path/to/dir"
args = shlex.split(command)
my_subprocess = subprocess.Popen(args)
它返回一个错误,因为trigger_env
环境中运行executed.py
。
发布于 2018-10-07 04:21:33
我对任何conda内置的方法做了一些研究,发现如下。第一个是解决方案,第二个是最终解决方案内置解决方案(在撰写本文时不可用)。
conda run
发布于 2017-02-03 20:46:39
如果您只需要使用另一个python,那么我相信您只需要使用command
中其他python的完整路径。
尝试进入您的executed_env
(即source activate executed_env
,如果Linux)并执行which python
。让我们假设现在返回HOME/.conda/envs/executed_env/bin/python
,这将成为您在命令中使用的python --即command = "HOME/.conda/envs/executed_env/bin/python executed.py --option1 -dir /path/to/dir"
。这
例如,让我们在不同的python版本中运行executed.py
。
conda create -n py27 python=2.7
--这是trigger_env
。conda create -n py35 python=3.5
--这是executed_env
。source activate py35
,获取完整的python路径,然后运行which python
(让我们调用EXECUTED_PYTHON作为这个描述)。通过source deactivate
停用。executed.py
导入系统打印(sys.version)trigger.py
(包括参数,但他们什么也不做)
命令= "EXECUTED_PYTHON executed.py --选项1 -dir /path/to/dir“args =shlex.split(命令) my_subprocess = subprocess.Popen(args)trigger_env
中运行它-- source activate py27
和python trigger.py
。3.5.2 |Continuum Analytics, Inc. [...]
(3.5是重要的部分)。您可以看到它正在使用executed_env
中的其他python。发布于 2021-01-03 06:06:29
在windows环境中使用conda,我只是复制了conda用于启动不同环境的不同jupyter笔记本的方式。使用"C:\ProgramData\Anaconda3\cwp.py“调用"C:\ProgramData\Anaconda3\python.exe”脚本的所有快捷方式,然后使用附加参数,您可以选择要执行的环境和文件。
在我的例子中,环境名称= AutomateXXReporting,要执行的文件=AutomateXXReporting
C:\ProgramData\Anaconda3\python.exe C:\ProgramData\Anaconda3\cwp.py C:\Users\ismael.serrano\.conda\envs\AutomateXXReporting C:\Users\ismael.serrano\.conda\envs\AutomateXXReporting\python.exe C:\Users\ismael.serrano\Documents\GIT\xxx\notebooks\exports\get_JIRA_user_streams.py
在此之前,我曾如保罗所指出的那样成功地进行了工作,但遇到了一个不足以解决问题的问题。来自完整路径的python无法使用它工作的cwp.py找到一些库。
https://stackoverflow.com/questions/42025173
复制相似问题