微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-运行虚拟环境

我正在尝试在Ansible中运行虚拟环境.

它不断出错.

这是代码

- name: Install virtualenv
  pip: name=virtualenv
  when: virtualenvexists.stat.exists != true

- name: Create virtualenv
  sudo: true
  command: virtualenv /home/vagrant/db/venv

- name: Activate
  sudo: yes
  sudo_user: vagrant
  command: /home/vagrant/db/venv/bin/source /home/vagrant/db/venv/bin/activate

我收到错误消息:

{“ cmd”:“ / home / vagrant / db / venv / bin / activate”,“ Failed”:true,“ rc”:13}
讯息:[Errno 13]权限被拒绝

我尝试过以多个用户身份运行此命令,并且还试图弄清楚如何在不激活虚拟实例的情况下自动从虚拟实例运行命令,而且我也没有运气.

如何在Ansible的虚拟环境中运行命令?

我也尝试过这个没有运气:

- name: ansible_python_interpreter
  set_fact:
    ansible_python_interpreter: /home/vagrant/db/venv/bin/python

解决方法:

这里有很多问题.首先是您要以root用户身份创建虚拟环境:

- name: Create virtualenv
  sudo: true
  command: virtualenv /home/vagrant/db/venv

但是您正在尝试以无业游民的用户身份访问它:

- name: Activate
  sudo: yes
  sudo_user: vagrant
  command: /home/vagrant/db/venv/bin/source /home/vagrant/db/venv/bin/activate

您可能希望在两个任务上都使用sudo_user:vagrant.

其次,source命令是内置的shell,您不会在/ home / vagrant / db / venv / bin / source中找到它.因此,该命令根本没有意义.

最后,即使确实有意义,也没有实际效果:这将修改命令模块的环境,但对后续任务没有影响.有几种处理方法;如果您只是尝试运行已在虚拟环境中安装的命令,则可以直接运行该命令:

command: /home/vagrant/db/venv/bin/somecommand

这将正确使用虚拟环境中安装的Python版本.或者,您可以将所有内容嵌入到shell脚本中:

shell:
  cmd: |
    source /home/vagrant/db/venv/bin/activate
    do_stuff_here

更新资料

对于那些“行不通!”评论员,我给你… running example

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐