【问题标题】:How can install Django project requirement.txt with python script如何使用 python 脚本安装 Django 项目 requirements.txt
【发布时间】:2018-07-31 21:05:46
【问题描述】:

我正在创建一个用于设置和运行整个 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 中。

【问题讨论】:

    标签: python django python-3.5


    【解决方案1】:

    此时,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,您不必先激活虚拟环境。

    【讨论】:

    • 非常感谢先生,@ Alasdair
    • 能否请您告诉我,激活环境的更好方法。而不是 os.popen('/bin/bash --rcfile %s'%(venv_dir+'/bin/activate'))
    • 不是我的头顶,不。考虑激活虚拟环境正在做什么,以及您是否真的需要在 Python 脚本中这样做。您不需要 bash 提示符或 deactivate 函数。如果您只需要$PATH 环境变量,那么您可以修改os.environ['PATH']。但是,我认为在我的回答中使用pip 的完整路径可能是一种更好的方法。
    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 2011-08-08
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2013-01-09
    • 2018-05-13
    相关资源
    最近更新 更多