Итак, я создаю сайт в Django, и мне нужно использовать API, написанный на Ruby. Я загрузил API и написал рубиновый скрипт. Теперь я работаю над вызовом сценария из Django, используя метод подпроцесса POpen. Вот что я имею в своем представлении Django:Проблемы с использованием подпроцесса
def call(request):
context = RequestContext(request)
if request.method == 'POST':
form = sendCall(request.POST)
if form.is_valid():
form.save(commit=True)
p=subprocess.Popen("cd verboice-api-ruby/lib;ruby \"verbyTest.rb\"",shell=False, stdout=subprocess.PIPE)
output, errors = p.communicate()
return mainIndex(request)
else:
print form.errors
else:
form = sendCall()
return render_to_response('main/call.html', {'form': form}, context)
Я запускаю сервер и активирую вызов. Сценарий ruby отправит вызов, а затем вернется на главную страницу. Но это дает мне ошибку, когда приходит время вызвать фактический рубиновый скрипт. Это дает мне эту ошибку:
OSError at /main/call/
[Errno 2] No such file or directory
Request Method: POST
Request URL: http://127.0.0.1:8000/main/call/
Django Version: 1.5.4
Exception Type: OSError
Exception Value:
[Errno 2] No such file or directory
Exception Location: /anaconda/lib/python2.7/subprocess.py in _execute_child, line 1308
Python Executable: /anaconda/bin/python
Python Version: 2.7.5
Python Path:
['/Users/manavdutta/Downloads/savinglives',
'/anaconda/lib/python27.zip',
'/anaconda/lib/python2.7',
'/anaconda/lib/python2.7/plat-darwin',
'/anaconda/lib/python2.7/plat-mac',
'/anaconda/lib/python2.7/plat-mac/lib-scriptpackages',
'/anaconda/lib/python2.7/lib-tk',
'/anaconda/lib/python2.7/lib-old',
'/anaconda/lib/python2.7/lib-dynload',
'/anaconda/lib/python2.7/site-packages',
'/anaconda/lib/python2.7/site-packages/PIL',
'/anaconda/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info']
Server time: Sun, 5 Jan 2014 16:46:38 -0600
Что я должен сделать, чтобы остановить эту ошибку?