2014-01-13 79 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']) 

而這一切都爲我工作。