通过脚本激活虚拟环境并安装软件包

时间:2014-03-20 18:46:18

标签: python python-2.7

我经常发现自己正在为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

1 个答案:

答案 0 :(得分:0)

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

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

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