我试图让简单的python脚本调用另一个脚本,只是为了更好地理解它是如何工作的。 'main'代码如下:
#!/usr/bin/python
import subprocess
subprocess.call('kvadrat.py')
及其调用的脚本 - kvadrat.py
:
#!/usr/bin/python
def kvadriranje(x):
kvadrat = x * x
return kvadrat
print kvadriranje(5)
被调用的脚本可以独立工作,但是当通过'main'脚本调用时会发生错误:
Traceback (most recent call last):
File "/Users/user/Desktop/Python/General Test.py", line 5, in <module>
subprocess.call('kvadrat.py')
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 444, in call
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 595, in __init__
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 1106, in _execute_child
OSError: [Errno 2] No such file or directory
显然有些不对劲,但作为初学者却看不到什么。
答案 0 :(得分:3)
你需要给它你想要调用的脚本的完整路径,如果你想动态地(并且你在同一个目录中),你可以这样做:
import os
full_path = os.path.abspath('kvadrat.py')
答案 1 :(得分:3)
你试过了吗?
from subprocess import call
call(["python","kvadrat.py"]) #if in same directory, else get abs path
您还应该检查您的文件是否在那里:
import os
print os.path.exists('kvadrat.py')
答案 2 :(得分:0)
Subprocess.call要求文件可执行并在路径中找到。在unix系统中,您可以尝试使用subprocess.call(['./kvadrat.py'])
在当前工作目录中执行kvadrat.py文件,并确保kvadrat.py
具有可执行权限;或者您可以将其复制到PATH中的目录,例如/ usr / local / bin - 然后它可以在任何地方执行。
大多数情况下,您不希望使用子进程运行其他python应用程序,而只是将它们作为模块导入,但是......