Я думаю, что имею представление о том, что происходит. Я пока не знаю, как это исправить.
Чтобы воспроизвести ваш сценарий, я написал небольшой сценарий.
#!/usr/bin/python
import sys, django
print django.VERSION
После чего я выполнил его после входа через SSH, а также удаленно (ssh yourserver.com "python /home/me/script.py"
), и все прошло нормально.
Затем я изменил сценарий.
#!/usr/bin/python
import os
print os.environ['DJANGO_SETTINGS_MODULE']
Эта версия работала, когда я вошел на сервер, но не удалось , когда я попытался выполнить ее удаленно.
Traceback (most recent call last):
File "/home/me/script.py", line 3, in <module>
print os.environ['DJANGO_SETTINGS_MODULE']
File "/usr/lib/python2.5/UserDict.py", line 22, in __getitem__
raise KeyError(key)
KeyError: 'DJANGO_SETTINGS_MODULE'
Очевидно, переменная окружения DJANGO_SETTINGS_MODULE
не устанавливается при удаленном выполнении команды по SSH. Я подозреваю, что может быть тем, что идет не так в вашем случае. Вам нужно будет выяснить, как убедиться, что эта переменная установлена правильно перед выполнением сценария.
Возможно, вы можете явно установить его: os.environ['DJANGO_SETTINGS_MODULE'] = 'foo'
. .
Попробуйте это:
ssh yourserver.com "python /home/me/script.py" -t
DJANGO_SETTINGS_MODULE=app.settings.custom