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变量。