如何在 Windows 上使用 subprocess.run 运行 bash 命令 [重复]

2024-03-19

我想使用运行 shell 脚本和 git-bash 命令subprocess.run(),在 python 3.7.4 中。当我在上面运行这个简单的例子时子流程文档页面 https://docs.python.org/3/library/subprocess.html有时候是这样的:

import subprocess

subprocess.run(["ls", "-l"])

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\pycharm\project\envs\lib\subprocess.py", line 472, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:\pycharm\project\envs\lib\subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
  File "C:\pycharm\project\envs\lib\subprocess.py", line 1178, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified


# it also fails with shell=True
subprocess.call(["ls", "-l"], shell=True)

'ls' is not recognized as an internal or external command,
operable program or batch file.
1

消息来自shell=True是来自 Windows cmd 的消息,表明子进程没有向 git-bash 发送命令。

我正在使用位于的 conda 环境project/envs/python 的文件夹。我还安装了 git-bash。

我也尝试设置环境并得到相同的错误。

import os
import subprocess

my_env = os.environ.copy()
my_env["PATH"] = 'C:\Program Files\Git\;' + my_env["PATH"]
subprocess.run(['git-bash.exe', 'ls', '-l'], env=my_env)

Traceback (most recent call last):
  File "<input>", line 3, in <module>
  File "C:\pycharm\project\envs\lib\subprocess.py", line 472, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:\pycharm\project\envs\lib\subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
  File "C:n\pycharm\project\envs\lib\subprocess.py", line 1178, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

我可以通过指向 git-bash.exe 来运行它,但它返回一个空字符串而不是我的目录中的文件

import subprocess
subprocess.run(['C:\Program Files\Git\git-bash.exe', 'ls', '-l'], capture_output=True)

CompletedProcess(args=['C:\\Program Files\\Git\\git-bash.exe', 'ls', '-l'], returncode=0, stdout=b'', stderr=b'')


我将不胜感激任何有关使其正常工作的最佳方法的建议,如上所示子流程文档页面 https://docs.python.org/3/library/subprocess.html.


我发现我可以使用运行命令...Git\bin\bash.exe而不是...\Git\git-bash.exe, 像这样:

import subprocess
subprocess.run(['C:\Program Files\Git\\bin\\bash.exe', '-c','ls'], stdout=subprocess.PIPE)

CompletedProcess(args=['C:\\Program Files\\Git\\bin\\bash.exe', '-c', 'ls'], returncode=0, stdout=b'README.md\n__pycache__\nconda_create.sh\nenvs\nmain.py\ntest.sh\nzipped\n')

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Windows 上使用 subprocess.run 运行 bash 命令 [重复] 的相关文章

随机推荐

  • MYSQL:类似方法,相似单词 - 但不显示搜索到的单词

    实际上我使用这种方法来显示搜索请求的相似单词 query SELECT FROM searches WHERE Query LIKE search ORDER BY Query 如果有人搜索 nelly 它会在数据库中查找类似的单词 耐莉
  • as.POSIXct 拒绝 +1300 时区

    我在用着as POSIXct用时区解析时间 如下所示 as POSIXct 2009 01 05 14 19 1200 format Y m d H M z 但是 如果字符串包含时区信息 1300 函数返回NA gt as POSIXct
  • SQLGrammarException:ORA-00904(“无效标识符”)

    我收到 Oracle 错误 org hibernate exception SQLGrammarException当我对使用 JPA 和 Spring 的 Java 类运行 JUnit 测试时 ORA 00904 ALIAS COLUMN
  • Wix 自定义对话框

    目前 我们的安装向导使用的是 Wix 经典主题 现在 我们计划改进安装程序的外观和感觉 1 我如何将自定义对话框经典主题更改为其他主题 2 在安装我们的设置时 我们计划显示一些图像 例如幻灯片放映 是否可以像 Wix 中那样显示图像 我是否
  • 镜像两个可写 SVN 存储库之间的子文件夹

    我正在尝试处理涉及我公司的 SVN 服务器的情况 我们将所有重要代码保存在锁定服务器中 我们将其称为 开发 服务器 有些文件需要由公司网络外部的用户编辑 因此我们有另一个 SVN 服务器 全局 服务器 它可以在防火墙外部访问 并且包含那些包
  • Opencv 静态构建,jpeg,png,tiff 不是静态链接?

    我将 opencv 233 构建为静态库 但是当我在应用程序中使用它时 在调用 cv imwrite 时会出现链接错误 tiff png jasp 库未链接 这是我应该在我的应用程序中链接这些我自己的意图还是我错误地构建了它 我希望第 3
  • C# 泛型:“X where T: X”泛型类型约束有什么意义?

    读一本书 NHibernate 3 初学者指南 https www packtpub com application development nhibernate 3 beginners guide我发现了一个令我好奇的片段 实践时刻 创建
  • 使用 Qt,工作线程创建新的 GUI 元素

    我将保持代码简单 以便你们可以看到我正在尝试做什么 我知道所有锁定问题等 我试图弄清楚信号和插槽如何与线程一起使用 在main cpp中 int main int argc char argv QApplication app argc a
  • 欧拉计划 #13 理解 (Python)

    问题13 http projecteuler net problem 13 http projecteuler net problem 13 计算出以下一百个 50 位数字之和的前十位数字 那么 问题的总和是 5000 位 答案是结果的前
  • Hibernate:@SecondaryTable 不起作用

    I know SecondaryTable这些问题已经发布了很多次 所以 如果有相同的问题 我还没有找到 请给我链接或建议 我的数据库中有两个表 firstTable and secondTable 两个 POJO Hibernate 类
  • 选择物化多选中的所有选项

    Bootstrap 多重选择有选择全部的选项 例如这里 https stackoverflow com questions 26525739 boostrap multiselect select all checked by defaul
  • 如何在 C 中连接两个字符串宏?

    我正在尝试为我的程序实现 VERSION 宏 该宏将在某些情况下进行更改 宏 VERSION 通过 Makefile 定义 git 信息放在那里 并且是一个字符串 现在我有一组 define d 开关 我希望 VERSION 能够反映其中哪
  • 如何在 Ruby 中创建简单的数组?

    在 Ruby 中创建这个数组的最短方法是什么 10 20 30 40 50 60 70 80 90 100 谢谢你的帮助 关于什么Range step http www ruby doc org core 2 0 Range html me
  • 在.Net 下为低完整性进程添加写访问权限

    我正在创建一个用于文件创建的 FileSecurity 该文件对于低完整性进程也应该具有写入访问权限 FileSecurity fileAcl new FileSecurity add everyone IdentityReference
  • 在 Symfony2 中配置 Assetic 的输出目录

    我想全局配置 assetic 转储 JS 文件的输出目录 目前 他们总是去web js 我想将其更改为web js compiled 可以在每个文件级别指定它 http symfony com doc 2 0 cookbook asseti
  • [:space:] 和 [:blank:] 有什么区别?

    来自正则表达式简介 http tldp org LDP abs html x17046 html blank 匹配空格或制表符 space 匹配空白字符 空格和水平制表符 对我来说 这两个定义是相同的 我想知道它们是否真的重复 如果不同 有
  • 嵌套文档上的 Azure DocumentDB ARRAY_CONTAINS

    似乎是ARRAY CONTAINS嵌套文档上的函数永远不会匹配任何文档 例如 尝试使用 Azure DocumentDB 进行以下简单查询查询游乐场 https www documentdb com sql demo Sandbox SEL
  • 为什么必须同时使用编译器标志和运行时标志才能在 Haskell 中获得多核支持?

    Haskell wiki 显示您需要同时设置编译标志和运行时标志才能获得多核支持 为什么使用该库不足以在编译时获得正确的行为 为什么运行时可执行文件无法检测到它是使用 threaded 编译的并使用系统上的所有内核 除非另有指定 我认为默认
  • 在 Unix 上正确处理 PID 文件的参考

    我在哪里可以找到备受推崇的参考详细介绍了 Unix 上 PID 文件的正确处理 在 Unix 操作系统上 通常的做法是使用特殊的锁定文件 PID 文件来 锁定 程序 通常是守护程序 这是一个位于可预测位置的文件 通常是 var run fo
  • 如何在 Windows 上使用 subprocess.run 运行 bash 命令 [重复]

    这个问题在这里已经有答案了 我想使用运行 shell 脚本和 git bash 命令subprocess run 在 python 3 7 4 中 当我在上面运行这个简单的例子时子流程文档页面 https docs python org 3