擅长:python、mysql、java
<p>你似乎对<code>PATH</code>和<code>PYTHONPATH</code>的性质有点困惑。</p>
<p><code>PATH</code>是一个环境变量,它告诉OS shell在哪里搜索可执行文件。</p>
<p><code>PYTHONPATH</code>是一个环境变量,它告诉Python解释器在哪里搜索要导入的模块。它与查找可执行文件无关。</p>
<p>由于底层实现的不同,<code>subprocess.Popen</code>将只在非Windows系统上默认搜索路径(Windows有一些它总是搜索的系统目录,但这与<code>PATH</code>处理不同)。扫描路径的唯一可靠跨平台方法是将<code>shell=True</code>传递给子进程调用,但这有其自身的问题(如<a href="http://docs.python.org/library/subprocess#subprocess.Popen" rel="nofollow">^{<cd9>} documentation</a>中所述)</p>
<p>但是,您的主要问题似乎是,您将路径片段传递给<code>Popen</code>,而不是简单的文件名。一旦有了目录分隔符,就要禁用<code>PATH</code>搜索,即使是在非Windows平台上(例如,请参阅Linux文档中的<a href="http://www.kernel.org/doc/man-pages/online/pages/man3/exec.3.html" rel="nofollow">exec family of functions</a>)。</p>