次の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
スーパーユーザーの作成時) でエラーが発生します。