2014-01-13 81 views
-2

我试图从Python文件调用Jython脚本。Python不使用'subprocess'模块调用Jython

我已经在Jython的文件:testing.py,其中包含:

print "Hello" 

以后,我的Python的文件caller.py包含:

import subprocess 
subprocess.call(['jython', 'testing.py']) 

如果我执行调用jython脚本的python文件,我得到一个错误:

Traceback (most recent call last): 
    File "C:\Documents and Settings\Administrador\workspace\Interfaz\bashpython.py", line 3, in <module> 
    subprocess.call(['jython', 'testing.py']) 
    File "C:\Python27\lib\subprocess.py", line 486, in call 
    return Popen(*popenargs, **kwargs).wait() 
    File "C:\Python27\lib\subprocess.py", line 672, in __init__ 
    errread, errwrite) 
    File "C:\Python27\lib\subprocess.py", line 882, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] El sistema no puede hallar el archivo especificado 

的事情是,如果我改变caller.py功能,它调用另一个Python函数,而不是一个Jython之一,完美的作品(它打印Hello字符串):

import subprocess 
subprocess.call(['python', 'testing.py']) 

我使用Eclipse标准4.3.1。和PyDev。提前


感谢
+0

如果指定'jython'的绝对路径,会发生什么? 'r'C:\ path \ to \ jython.exe'' – falsetru

+0

确切的命令是哪一个? 'subprocess.call(['C:\ path \ to \ jython.exe','testing.py'])'?至少不起作用。提前致谢。 –

+2

您应该为列表的第一个项目指定jython的实际路径。 – falsetru

回答

0

如果testing.pycaller.py都在同一个文件夹,然后上面的代码应该工作。但是,如果它们不在同一个位置,那么显然你必须提供文件的位置。

我有caller.py in /home/reuben/caller.py and testing.py in /home/reuben/Documents/testing.py。我在caller.py中给出了testing.py的完整路径。

subprocess.call(['jython', '/home/reuben/Documents/testing.py']) 

而这一切都为我工作。