我正在创建一个用于设置和运行整个Django项目的脚本。
venv_parent_dir = os.path.abspath(os.path.join(os.getcwd(),os.pardir))
venv_dir = os.path.abspath(os.path.join(venv_parent_dir, 'fvenv'))
subprocess.run(args=['virtualenv', '-p', 'python3', venv_dir])
os.popen('/bin/bash --rcfile %s'%(venv_dir+'/bin/activate'))
使用上面的代码我创建了一个虚拟环境,然后激活它。现在我想在激活的虚拟环境中安装requirements.txt
文件
subprocess.run(args=['pip3', 'install', '-r', 'requirements.txt'])
我尝试使用subprocess
,但它不是在虚拟环境中安装,而是在操作系统Python中安装。
答案 0 :(得分:2)
目前,os.popen
命令不会影响subprocess.run
运行的环境。这意味着您的subprocess.run
来电正在使用系统pip3
而不是来自virtualenv的pip
。您可以使用完整路径来使用virtualenv中的pip
:
import os
pip = os.path.join(venv_dir, 'bin', 'pip')
subprocess.run(args=[pip, 'install', '-r', 'requirements.txt'])
使用/path/to/venv/bin/pip
,您不必先激活虚拟环境。