[英]Ubuntu Run Python file from virtual environment without activation
[英]Python: How to script virtual environment building and activation?
我想写一个做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将不会激活,并且未安装要求。
有没有一个简单的技巧可以在python这3步中很好地编写脚本?
问题在于os.system('source test6_env/bin/activate')
仅针对此特定os.system()
调用生成的子外壳激活虚拟环境,而不会为后续的任何os.system()
激活虚拟环境。 相反,只需一次调用即可运行所有shell命令,例如
os.system('python3 -m venv test6_env && . test6_env/bin/activate && pip install -r requirements.txt')
或者,将您的命令放在shell脚本中,然后使用os.system()
执行该命令,或者最好使用subprocess
os.system()
模块中的函数(例如,
import subprocess
subprocess.run('/path/to/script.sh', check=True)
我现在必须采取一种方法,所以我将其留在这里。 您必须安装了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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.