Python:在 git-bash 环境中运行 python 脚本

标签 python bash cmd subprocess popen

我在 git-bash 环境中运行 python 脚本时遇到问题。 我的应用程序(目前)从 exe 容器 (py2exe) 运行,它应该只执行另一个 python 脚本,但在 git-bash 环境中。

应用程序和 git-bash.exe 位于同一目录中(git 的整个可移植版本被提取到此文件夹中)。 我要运行的第二个脚本位于名为 scripts 的子文件夹中。

这里是 python 文件,它将被编译为自可执行文件: 导入操作系统

try:
    root = os.path.dirname(__file__)
except: 
    root = os.path.dirname(sys.argv[0])

git       = os.path.join(root,"git-bash.exe")
gitScript = os.path.join(root,"scripts","git_deploy.py")

我尝试了不同的变体,但没有成功:

# 1st try:
subprocess.Popen(["python", gitScript], executable=git)

# 2nd try:
subprocess.Popen(["python %s"%gitScript], shell=True, executable=git)

# 3rd try:
subprocess.Popen(["-c", "python", gitScript], executable=git)

# 4th try:
subprocess.Popen([git, "python", gitScript])

# 5th try:
subprocess.Popen([git, "-c", "python", gitScript])

知道我在这里做错了什么吗?

谢谢

最佳答案

我已经对以下内容进行了快速测试,它似乎有效。 有几点:

  • 您必须确保C:\Program Files (x86)\Git\bin位于您系统的 PATH 中环境变量
  • 您必须自行修复路径以匹配您的系统配置。
  • 路径中的任何斜杠都需要转义(即“双斜杠”)。
  • 通向您的 git_deploy.py 的路径需要用双引号括起来,这意味着您必须使用双反斜杠转义这些引号: \\"<path_to_git_deploy.py>\\"

示例代码:

import os, shlex, subprocess
from subprocess import Popen, PIPE, STDOUT

gitScript = 'C:\\Users\\MYUSERNAME\\Downloads\\scripts\\git_deploy.py'
command = '"C:\\Program Files (x86)\\Git\\bin\\sh.exe" --login -i -c "python \\"' + gitScript + '\\""'
command_args = shlex.split(command)
process = Popen(command_args, stdout=PIPE, stderr=STDOUT)
output, err = process.communicate()
print output

关于Python:在 git-bash 环境中运行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32481855/

相关文章:

python - 在Python中将 "§"键绑定(bind)到按钮

python - 在 GUI 中显示函数

python - 如何将 pandas dataframe 转换为具有多对一关系的有序列表?

java - 在cmd中执行后退出bat文件

python - 使用 Numpy ndarray 进行条件索引

bash - 在 sh shell 上使用 <<< 会引发错误,而不是在 bash 中

bash 脚本 : build a command then execute

macos - Bash 脚本一般问题(条件和变量传递)

python - 将个人访问 token 通过管道传输到 Windows cmd 的 az devops login

command-line - 具有旧值的 Windows 批处理回显变量