【发布时间】:2017-11-21 23:43:54
【问题描述】:
我正在尝试让some code 运行,但我触发了一个错误:
if not isInstalled('dot') and not isInstalled('dot.exe'):
print "You must have graphviz (specifically dot) installed to run code2flow"
sys.exit(1)
哪个调用
def isInstalled(program):
def is_exe(fpath):
return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
for path in os.environ["PATH"].split(os.pathsep):
path = path.strip('"')
exe_file = os.path.join(path, program)
if is_exe(exe_file):
return True
return False
但我不明白为什么这会失败。我的路径包含 graphviz
> 回显 %PATH%
...;c:\Program Files (x86)\Graphviz2.38\bin;...
文件存在
> dir "c:\Program Files (x86)\Graphviz2.38\bin\dot.exe"
c:\Program Files (x86)\Graphviz2.38\bin 目录
04/14/2014 09:22 AM 7,680 dot.exe
对出了什么问题有任何想法吗?
【问题讨论】:
-
python -c 'import os; print(os.environ["PATH"])'和python -c 'import os.path; print(os.path.isfile("c:\Program Files (x86)\Graphviz2.38\bin\dot.exe"))'怎么样 -
它是如何失败的?我尝试了您的代码,在导入“os”并测试“HelpPane.exe”(我在 windows- 文件夹中找到的这个 exe)后,我得到了您要寻找的“True”。
-
@AnthonySottile 翻转引号以便 Windows 可以首先处理它打印路径,其中确实包括
;c:\Program Files (x86)\Graphviz2.38\bin;。第二个是False,我不知道为什么。 -
@am2
isInstalled('dot.exe')isFalse尽管文件存在于路径上的目录中。 -
@Charles:当然,我只想在我的系统(未安装 dot.com)上测试您的代码。你的代码对我有用(使用另一个可执行文件)。如果我是你,我会添加一个“print(exe_file)”、一个“print(os.path.isfile(fpath))”和一个“print(os.access(fpath, os.X_OK))”来确保,不足为奇。并且也许我会尝试使用“exe”来确保“com”不是问题。