我在git-bash环境中运行python脚本时遇到问题。
我的应用程序正在运行(现在)来自exe-container(py2exe),它应该只执行另一个python脚本,但是在git-bash
环境中。
app和git-bash.exe位于同一目录中(git
的整个可移植版本被解压缩到此文件夹中)。
我想要运行的第二个脚本位于名为scripts
的子文件夹中。
这里是python文件,它将被编译为自执行文件: import 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])
知道我在这里做错了吗?
由于
答案 0 :(得分:1)
我给了以下一个快速测试,它似乎工作。 有几件事:
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