得到默認的語言環境,我有以下Django的管理命令:面料,不能Django的
fabrictest.py
from django.core.management.base import NoArgsCommand
import locale
class Command(NoArgsCommand):
def handle_noargs(self, **options):
print locale.getdefaultlocale()
,我可以在本地運行:
$ /home/user/env/bin/python manage.py fabrictest
('en_US', 'UTF-8')
然而,當我使用以下結構任務遠程運行命令時
@task
def test():
# run manage.py using the python bin from the virtualenv
with cd(env.project_root):
run("/home/user/env/bin/python manage.py fabrictest")
我得到以下輸出
[server] Executing task 'test'
[server] run: /home/user/env/bin/python manage.py fabrictest
[server] out: (None, None)
爲什麼會(None, None)
代替('en_US', 'UTF-8')
?這會產生一些其他管理措施的錯誤(即在創建超級用戶時爲syncdb
)。
運行本地manage.py時可能會使用'/ home/user/env/bin/python',因爲它可能不一樣。你也在同一臺遠程服務器上? – Morgan
當我從服務器本地運行'manage.py'時,我實際上使用了virtualenv的python bin。我將編輯問題以使其更加明確。 這兩種情況都是完全相同的服務器,我第一次在本地運行(通過ssh進入服務器),第二次遠程運行它(使用光纖連接到服務器)。 –
它的工作原理是:'run(「LANG = en_US.UTF-8/home/user/env/bin/python manage.py fabrictest」)'? – jfs