python - Python:如何编写虚拟环境构建和激活脚本?
问题描述
我想编写一个执行 3 件事的 python 脚本:
- 用python3搭建虚拟环境
- 激活这个新的虚拟环境。( bash: 源 myvirtenv/bin/acticate)
- 使用 requirements.txt 安装软件包(bash: pip install -r )
在我的项目中,我使用普通的 virtualenviroment 包。我必须在 Debian 机器上完成。
我试图模仿 bash 命令,os.system()
但没有使用下面的代码。
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 将不会被激活并且没有安装要求。
是否有一个简单的技巧可以很好地在 python 中编写这个 3 stepy 脚本?
解决方案
问题是os.system('source test6_env/bin/activate')
只为这个特定os.system()
调用产生的子shell激活虚拟环境,而不是任何后续调用。相反,只需一次调用即可运行所有 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)
推荐阅读
- java - 任务:app:mergeExtDexDebug在运行反应本机的android应用程序中失败
- spring - 清理数据库时 Flyway 卡住(Postgres 11)
- c++ - 读取文件 C++ 时出现奇怪的错误
- mysql - 显示查询 mysql 条件
- python - 如何在 Fasttext 监督分类模型中为每个标签获取最重要的标记?
- c# - 我的 IntelliSense 没有显示任何自动填充,即使代码仍然有效
- windows - SetWindowPos 如何影响所有者窗口的 Z 顺序?
- javascript - 如果 array2 不具有相同的对象键值,则从对象数组 (array1) 中删除对象
- python - 用while在几个线程中运行Python函数
- angular - 基于公共布尔数组的 Ionic Auth Gaurd canLoad