随笔 - 321  文章 - 0  评论 - 6  阅读 - 34万

shell调用python

转载:https://zhuanlan.zhihu.com/p/363531715

 

一般而言,执行一个python文件,需要先激活虚拟环境,再切换到对应的路径,在该路径下执行python文件。像这种重复性的命令,可以封装到一个shell脚本文件,执行一个shell脚本文件,就相当于操作多行命令。特别是一个项目中,可能要执行多个python文件的时候,这个封装就很有意义。

例子:

假如要执行一个Python文件,常规操作如下:

  1. 打开终端
  2. 激活虚拟环境(使用anoconda建立的虚拟环境,环境名称是py37):conda activate py37
  3. 切换路径:cd /usr/test/
  4. 执行python文件:python main.py

为了更便捷地操作,对步骤2~4进行封装,新建一个shell脚本文件,名为:start_py.sh,文件的具体内容如下:

conda activate py37
cd /usr/test/
python main.py

保存文件,退出

在终端上使用source执行shell脚本文件即可:

source start_py.sh

这就完成了封装。

注意!!!!!!!!!!!!!!!!!!!:

执行shell脚本文件时,一定是

source start_py.sh

不能是

bash start_py.sh

也不能是

sh start_py.sh

还不能是

./start_py.sh

其区别在于,source启动的shell脚本,是在父进程中继续运行的。而后面的3个启动方法,是新建子进程运行的,那样切换路径和激活虚拟环境就没有意义了。以前没留意它们的区别,导致我摸索了2个小时,感觉挺实用,就把这个经验分享给小伙伴们。

posted on   该用户很懒  阅读(3027)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2021-06-09 hive beeline hivevar和hiveconf的区别
2021-06-09 用户提交任务到yarn报错
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示