Windows系统PyCharm右键运行.sh文件

在参考了Windows系统下pycharm运行.sh文件,执行shell命令_shell在pycharm-CSDN博客

和深度学习:PyCharm中运行Bash脚本_pycharm bash-CSDN博客

配置了右键执行.sh文件之后,发现在Windows的PyCharm中直接右键运行sh文件,存在如下问题:

  1. 有些命令在Linux中能正常运行,Windows中却不能,例如xargs、source、&&等

  2. 即使配置成sh.exe也只能通过在Terminal中输入脚本路径来运行它,无法做到在左侧文件导航目录那里,点右键直接运行

===========================

最终,我把所有.sh脚本全部,全部改成了.py文件,然后使用subprocess.run来运行shell命令。

例如:

原文件 -- scripts/format.sh

bash 复制代码
#!/bin/sh -e
set -x

[ -f pyproject.toml ] || ([ -f ../pyproject.toml ] && cd ..)

SKIP_MYPY=1 pdm run fast lint

修改后 -- scripts/format.py

python 复制代码
#!/usr/bin/env python
import os
import shlex
import subprocess
import sys
from pathlib import Path

work_dir = Path(__file__).parent.resolve().parent
if Path.cwd() != work_dir:
    os.chdir(str(work_dir))

cmd = "pdm run fast lint"
r = subprocess.run(shlex.split(cmd), env=dict(os.environ, SKIP_MYPY="1"))
sys.exit(None if r.returncode == 0 else 1)

修改之后,就可以直接右键运行了,如下图:

更多示例,可以通过如下方式查看:

bash 复制代码
git clone git@github.com:waketzheng/fast-dev-cli.git
cd fast-dev-cli
git diff v0.10.0 v0.10.1 scripts/

注:如果要执行的shell命令是以python开头的,如`python -m fast_dev_cli lint`,若系统中有多个版本的python解释器,最好把其中的python改成Path(sys.executable),如:

bash 复制代码
#!/usr/bin/env python
import shlex
import subprocess
import sys
from pathlib import Path

cmd = "python -m fast_dev_cli lint"
command = shlex.split(cmd)
r = subprocess.run([Path(sys.executable), *command[1:]])
sys.exit(None if r.returncode == 0 else 1)
相关推荐
for_ever_love__1 小时前
概率与统计——分布、期望与贝叶斯,语言模型的建模基础
python·机器学习·大模型·概率论
ss2731 小时前
AI全栈实战 | 3.5-01 Python 全栈前端最小集:不会 React 也能做出能看的后台,关键就一条线
前端·python·react.js
郝学胜-神的一滴2 小时前
Numpy数据处理详解 01:NumPy 从环境搭建到入门上手
开发语言·人工智能·python·程序人生·数据分析·numpy
m0_734172422 小时前
Python用zip配对前先检查长度
python·学习
FYKJ_20102 小时前
SpringSecurity教室智能预约系统73972-计算机课程设计、毕业设计
java·vue.js·spring boot·python·mysql·spring·django
外收内放2 小时前
Python基础语法练习题(49-50)
开发语言·python
Cc.Y2 小时前
Java零基础入门:集合框架:ArrayList 与 LinkedList —— 告别数组的“死板“,拥抱动态容器的“灵活
java·开发语言·python
FYKJ_20102 小时前
springboot游泳馆管理系统79222-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
“AI国潮设计-小江”11 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
wenwen_chao11 小时前
Python学习与开发资源合集:实用技巧与工具推荐
python