Python Ansible django_manage在ubuntu服务器18.04上抛出UnicodedeCodeer错误,但手动运行该命令可以正常工作

Python Ansible django_manage在ubuntu服务器18.04上抛出UnicodedeCodeer错误,但手动运行该命令可以正常工作,python,django,ansible,Python,Django,Ansible,我有一个项目(python3.6,django v2.1),我使用Ansible v2.4.6部署到我的虚拟机ubuntu服务器18.04(在旧的ubuntu服务器16.04上没有问题,一切正常) 我有一个定制的Django管理命令,名为sure\u initial\u data: from django.contrib.auth.models import Permission from django.contrib.contenttypes.models import ContentType

我有一个项目(
python3.6
django v2.1
),我使用
Ansible v2.4.6
部署到我的虚拟机
ubuntu服务器18.04
(在旧的
ubuntu服务器16.04
上没有问题,一切正常)

我有一个定制的
Django
管理命令,名为
sure\u initial\u data

from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from django.core.management.base import BaseCommand

class Command(BaseCommand):
    def handle(self, *args, **options):
        perm_list = [
            {
                'content_type': ContentType.objects.get(
                    app_label='app_accounting', model='account'),
                'codename': 'account_list',
                'name': 'ver lista de cuentas',
            },
            {
                'content_type': ContentType.objects.get(
                    app_label='app_accounting', model='summary'),
                'codename': 'summary_list',
                'name': 'ver lista de resúmenes',
            },
        ]

        self.stdout.write('Creating missing permissions ...')
        for i, kwargs in enumerate(perm_list):
            p, _ = Permission.objects.get_or_create(**kwargs)

            self.stdout.write('   {:03d} {:15s} {:40s} {}'.format(
                i + 1,
                p.content_type.app_label,
                p.codename,
                p.name))
Creating missing permissions ...
  001     app_accounting    account_list    ver lista de cuentas contables
  002     app_accounting    summary_list    ver lista de resúmenes
我试着在
Ansible
中这样称呼它:

- name: run django "ensure_initial_data"
  django_manage:
    command: 'ensure_initial_data'
    app_path: '{{ django_app_base_dir }}'
    virtualenv: '{{ django_app_base_dir }}/.venv'
  notify: restart gunicorn app in supervisor
它抛出以下错误(因为单词
resúmenes
中的第二个
Permission
中带有重音的字母):

因此,这似乎不是Django和Postgres的问题(因为它在手动启动时运行良好),如果我使用以前的LTS版本ubuntu server 16.04,它也可以正常工作;在新的ubuntu服务器18.04上,
Ansible
似乎有些困惑

有一个github与我的问题完全相同,但它没有解决方案就关闭了


有什么想法吗?

我对Flask和Docker有个小问题。问题是未安排环境变量。下面的命令正在处理它

locale-gen en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US:en
export LC_ALL=en_US.UTF-8

我对Flask和Docker有个小问题。问题是未安排环境变量。下面的命令正在处理它

locale-gen en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US:en
export LC_ALL=en_US.UTF-8

我能想到的唯一区别是
ubuntuserver18.04
使用
python3.6
作为默认值,而
16.04
使用
python2.7
;也许这有点关系,但我不知道从哪里开始研究。我能想到的唯一区别是
ubuntu服务器18.04
使用
Python3.6
作为默认值,而
16.04
使用
Python2.7
;也许这有点关系,但我不知道从哪里开始研究。应该在哪里/什么时候运行?在VM上通过ansible在
django\u manage
部分之前运行?我想最好在django之前运行。我只是通过在运行
django\u manage
的任务中添加
环境:LC\u ALL:'en\u US.UTF-8'
使其工作起来(这在我的问题中描述);我的案例不需要其他2个环境变量。应该在何处/何时运行?在VM上通过ansible在
django\u manage
部分之前运行?我想最好在django之前运行。我只是通过在运行
django\u manage
的任务中添加
环境:LC\u ALL:'en\u US.UTF-8'
使其工作起来(这在我的问题中描述);我的案例不需要其他2个env变量。