Python:如何编写虚拟环境构建和激活脚本?

时间:2018-11-05 09:50:22

标签: python python-3.x virtualenv setup-deployment

我想编写一个执行3件事的python脚本:

  1. 使用python3构建虚拟环境
  2. 激活此新的虚拟环境。 (bash:来源myvirtenv / bin / acticate)
  3. 安装带有requirements.txt的软件包(bash:pip install -r)

在我的项目中,我使用普通的virtualenviroment软件包。我必须在Debian机器上做

我尝试用os.system()模仿bash命令,但没有在下面的代码中使用它。

import os
os.system('python3 -m venv test6_env')
os.system('source test6_env/bin/activate')
os.system('pip install -r requirements.txt --user')

问题virtualenv将不会激活,并且未安装要求。

这3步好用python编写脚本吗?

2 个答案:

答案 0 :(得分:5)

问题在于,os.system('source test6_env/bin/activate')仅为该特定os.system()调用所产生的子外壳激活虚拟环境,而没有为随后的任何激活。相反,只需一次调用即可运行所有shell命令,例如

os.system('python3 -m venv test6_env && . test6_env/bin/activate && pip install -r requirements.txt')

或者,将您的命令放在shell脚本中,然后使用os.system()执行,或者最好使用subprocess模块中的函数来执行,例如

import subprocess
subprocess.run('/path/to/script.sh', check=True)

答案 1 :(得分:0)

我现在必须采取一种方法,所以我将其留在这里。您必须安装了virtualenv。希望可以帮助某人:)

def setup_env():
    import virtualenv
    PROJECT_NAME = 'new_project'
    virtualenvs_folder = os.path.expanduser("~/.virtualenvs")
    venv_dir = os.path.join(virtualenvs_folder, PROJECT_NAME)
    virtualenv.create_environment(venv_dir)
    command = ". {}/{}/bin/activate && pip install -r requirements.txt".format(virtualenvs_folder, PROJECT_NAME)
    os.system(command)