在给定的conda环境中执行python脚本的最佳方法
我想使用子流程包从另一个python脚本在给定的conda环境中执行python脚本的最佳方法,python,subprocess,environment,conda,Python,Subprocess,Environment,Conda,我想使用子流程包从另一个python脚本trigger.py执行一个python脚本executed.py。executed.py必须在与trigger.py不同的conda环境中运行(比如executed\u env和trigger\u env)。最好的方法是什么?我当前的trigger.py代码是: command = "python executed.py --option1 -dir /path/to/dir" args = shlex.split(command) my_subproc
trigger.py
执行一个python脚本executed.py
。executed.py
必须在与trigger.py
不同的conda环境中运行(比如executed\u env
和trigger\u env
)。最好的方法是什么?我当前的trigger.py
代码是:
command = "python executed.py --option1 -dir /path/to/dir"
args = shlex.split(command)
my_subprocess = subprocess.Popen(args)
它返回一个错误,因为
executed.py
是在trigger_env
环境中运行的。如果您只需要使用另一个python,那么我相信您只需要在命令中使用另一个python的完整路径即可
尝试进入您的已执行的_env
(即源代码激活已执行的_env
(如果是Linux)并执行哪个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
- 创建py27环境
conda Create-n py27 python=2.7
这是触发器
- 创建py35环境
conda Create-n py35 python=3.5
这是执行的环境
- 通过运行
source activate py35
,然后运行which python
,获得py35的完整python路径(在本说明中,我们称之为已执行的python)。通过源停用
停用
- 然后我们创建
executed.py
import sys
print(sys.version)
- 然后是
trigger.py
(包括参数,但它们什么也不做)
- 现在,让我们在
trigger\u env
--源代码激活py27
和python trigger.py
中运行它
- 这将打印
3.5.2 | Continuum Analytics,Inc.[…]
(3.5是重要部分)。您可以看到它正在使用executed\u env
中的其他python
我对conda的内置方法做了一些研究,发现了以下几点。第一个是解决方案,第二个是最终解决方案内置解决方案(在撰写本文时不可用)
康达包装纸。
Guillerme Melo为conda环境中的python可执行文件创建了一个包装器。如果将其设置为IDE中的python解释器,例如PyCharm,它将激活调用它的conda环境,然后调用python解释器。
请参见“创建conda包装”一节:
康达跑步。
在上的conda github页面上进行了长时间的讨论,最终实现了一个新命令(实际上是以前可用的重新调用):
conda run
它在中进行了描述,并有望在2018年10月发布 在windows环境下使用conda,我只是复制了conda从不同环境启动不同jupyter笔记本的方式。所有快捷方式都使用“C:\ProgramData\Anaconda3\cwp.py”调用“C:\ProgramData\Anaconda3\python.exe”脚本,然后使用其他参数可以选择要执行的环境和文件
在我的例子中,环境名称=AutomateXXReporting,要执行的文件=C:\Users\ismael.serrano\Documents\GIT\xxx\notebooks\exports\get\u JIRA\u user\u streams.py
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它就可以了。我在写问题时考虑过这一点。对于部署来说,它不是很舒服。。。
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