Python: 运行 python 脚本在 git-bash 环境中
Python: run a python script inside the git-bash environment
我在 git-bash 环境中 运行 一个 python 脚本时遇到问题。
我的应用程序 运行ning(目前)来自 exe 容器 (py2exe),它应该只执行另一个 python 脚本,但在 git-bash
环境中。
该应用程序和 git-bash.exe 位于同一目录中(git
的整个便携式版本已提取到此文件夹中)。
我要 运行 的第二个脚本位于名为 scripts
.
的子文件夹中
这里是 python 文件,它将被编译为可执行文件:
导入 os
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
环境变量中
- 您必须自己修复路径以匹配您的系统配置。
- 路径中的任何斜杠都需要转义(即 "double slashes")。
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
我在 git-bash 环境中 运行 一个 python 脚本时遇到问题。
我的应用程序 运行ning(目前)来自 exe 容器 (py2exe),它应该只执行另一个 python 脚本,但在 git-bash
环境中。
该应用程序和 git-bash.exe 位于同一目录中(git
的整个便携式版本已提取到此文件夹中)。
我要 运行 的第二个脚本位于名为 scripts
.
这里是 python 文件,它将被编译为可执行文件: 导入 os
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
环境变量中 - 您必须自己修复路径以匹配您的系统配置。
- 路径中的任何斜杠都需要转义(即 "double slashes")。
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