繁体   English   中英

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

[英]Activate Virtual Environment and Install Packages via Script

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

我在这里遵循了这个问题的建议,但是没有用。 我正在Chromebook上通过油煎面包块运行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

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

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

您可能应该使用子流程; 不推荐使用os.system。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM