使用Ansible安装pip requirements.txt时出错,但在服务器上手动安装时出错

使用Ansible安装pip requirements.txt时出错,但在服务器上手动安装时出错,ansible,Ansible,当我从我的剧本中尝试以下内容时,我得到了一个错误 - name: Install project requirements remote_user: john pip: name=django-authtools virtualenv="/home/john/ve" 但是,如果我转到服务器并获取env的源代码,然后运行pip install django authtools 其他的软件包也能工作,只有这一个失败了。我已经检查过其他软件包是否从Ansible安装到virt

当我从我的剧本中尝试以下内容时,我得到了一个错误

- name: Install project requirements
  remote_user: john
  pip:
    name=django-authtools
    virtualenv="/home/john/ve"
但是,如果我转到服务器并获取env的源代码,然后运行
pip install django authtools

其他的软件包也能工作,只有这一个失败了。我已经检查过其他软件包是否从Ansible安装到virtualenv中,因此它不会尝试在其他地方安装

错误:

  File "/home/john/ve/build/django-authtools/setup.py", line 26, in <module>

    long_description='\n\n'.join([read('README.rst'), read('CHANGES.rst')]),

  File "/home/john/ve/build/django-authtools/setup.py", line 12, in read

    return open(os.path.join(os.path.dirname(__file__), fname)).read()

  File "/home/john/ve/lib/python3.4/encodings/ascii.py", line 26, in decode

    return codecs.ascii_decode(input, self.errors)[0]

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 550: ordinal not in range(128)
更新#2

我已经尝试了
/home/john/ve/bin/pip install-r/home/john/project/requirements.txt,因为它可以在服务器上运行,但通过Ansible它仍然失败。

这让人难以置信

最终发现了问题:语言环境

Ansible将区域设置设置为C,在我的例子中,
django authtools
失败

快速解决此问题的方法:

创建以下变量:

host_locale: en_GB.UTF-8

host_locale_dict: {
  LANG: "{{ host_locale }}",
  LC_COLLATE: "{{ host_locale }}",
  LC_CTYPE: "{{ host_locale }}",
  LC_MESSAGES: "{{ host_locale }}",
  LC_MONETARY: "{{ host_locale }}",
  LC_NUMERIC: "{{ host_locale }}",
  LC_TIME: "{{ host_locale }}",
  LC_ALL: "{{ host_locale }}",
}
在任务中设置
环境

environment: host_locale_dict

最后,我在ansible.cfg文件的
[默认值]
部分中设置了这个

module_lang    = en_US.UTF-8
另一件需要注意的事情是,我对目录结构的问题较少,例如:

DistributedReporting/
└── venv
    └── src
与之相反:

DistributedReporting/
├── src
└── venv
DistributedReporting/
├── src
└── venv