我想编写一个执行3件事的python脚本:
在我的项目中,我使用普通的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编写脚本吗?
答案 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)