【问题标题】:Activate Virtual Environment and Install Packages via Script通过脚本激活虚拟环境并安装包
【发布时间】:2014-03-20 18:46:18
【问题描述】:

我经常发现自己为 Flask 应用程序重新创建文件结构,因此我决定编写一个脚本来为我完成所有这些工作。我希望脚本创建我需要的所有文件夹以及带有一些基本样板的文件,它确实如此,那部分工作正常。但是,我还想创建一个虚拟环境并将 Flask 安装到该环境。那就是我遇到问题的地方。该脚本会运行,但会将 Flask 安装到我的 Python 系统安装中。

我遵循了this question here 中的建议,但它不起作用。我正在 Chromebook 上通过 crouton 运行 Ubuntu 12.04.4 LTS。

#!/usr/bin/python

from os import mkdir, chdir, getcwd, system
import sys

APP_NAME = sys.argv[1]
ROOT = getcwd()
PROJECT_ROOT = ROOT + '/' + APP_NAME

# dictionary represents folder structure. Key is the folder name and the value is it's contents
folders = {APP_NAME : {'app' : {'static': {'css' : '', 'img' : '', 'js' : ''}, 'templates' : ''} } }

def create_folders(dic):
    for key in dic:
        if isinstance(dic[key], dict):
            mkdir(key)
            prev = getcwd() + '/' + key
            chdir(prev)
            create_folders(dic[key])
        else:
            mkdir(key)

create_folders(folders)

chdir(PROJECT_ROOT)
open('config.py', 'a').close()

with open('run.py', 'a') as run:
    run.write("""stuff""")

with open('app/__init__.py', 'a') as init:
    init.write("""stuff""")

with open('app/views.py', 'a') as views:
    views.write("""stuff""")

open('app/models.py', 'a').close()

open('app/forms.py', 'a').close()
with open('app/templates/layout.html', 'a') as layout:
    layout.write("""stuff""")
system('chmod a+x run.py')
system('virtualenv venv')
system('. venv/bin/activate;sudo pip install flask')  # this does not seem to be working the way I am expecting it to

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    我想您的呼叫不在同一个控制台会话中,因此控制台环境与预期不符。我建议像这样使用 subprocess.Popen 在一个系统调用中连接相关命令(包括 limasxgoesto0 的建议):

    subprocess.Popen('virtualenv venv;source venv/bin/activate;pip install flask')
    

    您可能应该使用子进程; os.system 已弃用。

    【讨论】:

    • 1.这是source venv/bin/activate。 2. 只需pip install flask。如果你使用 sudo,它将全局安装
    • 使用subprocess.Popen('virtualenv venv;source venv/bin/activate;pip install flask') 给我OSError: [Errno 2] No such file or directory
    • 由 limasxgoesto0 提供的建议
    猜你喜欢
    • 2019-10-26
    • 2013-12-21
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2022-10-17
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多