使用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