首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python脚本中启动和运行虚拟服务器?

如何在python脚本中启动和运行虚拟服务器?
EN

Stack Overflow用户
提问于 2020-02-04 22:58:15
回答 1查看 3.8K关注 0票数 1

我正在尝试创建一个虚拟环境,启动它,然后在虚拟环境中执行每个命令。

代码语言:javascript
复制
    1. os.system("curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py")
    2. os.system("python3 get-pip.py")
    3. os.system("mkdir Apps")
    4. os.system("pip3 install virtualenv")
    5. os.system("virtualenv virt")
    6. os.system("source virt/bin/activate")
    7. os.system("pip3 install flask")

这是我现在拥有的代码,我试图在联机(5)上创建虚拟环境,然后尝试在联机(6)上激活它,然后在虚拟环境上执行第7行(安装烧瓶)。

我也尝试过os.system('. virt/bin/activate'),但是每次我运行python文件时,它都会执行所有操作,除了启动虚拟环境之外。

我正在Mac的终端上运行这个。

EN

回答 1

Stack Overflow用户

发布于 2020-02-05 09:06:57

很可能,虚拟环境仅在os.system()调用期间处于活动状态。在许多情况下,不需要激活虚拟环境,只需找到它的bin目录并运行在其中找到的二进制文件。

这类东西:

  • os.system('/path/to/venv/bin/python -m pip install flask')
  • os.system('/path/to/venv/bin/pip install flask')

对于另一种方法:

代码语言:javascript
复制
#!/usr/bin/env python3

import pathlib
import subprocess
import venv

class _EnvBuilder(venv.EnvBuilder):

    def __init__(self, *args, **kwargs):
        self.context = None
        super().__init__(*args, **kwargs)

    def post_setup(self, context):
        self.context = context

def _venv_create(venv_path):
    venv_builder = _EnvBuilder(with_pip=True)
    venv_builder.create(venv_path)
    return venv_builder.context

def _run_python_in_venv(venv_context, command):
    command = [venv_context.env_exe] + command
    print(command)
    return subprocess.check_call(command)

def _run_bin_in_venv(venv_context, command):
    command[0] = str(pathlib.Path(venv_context.bin_path).joinpath(command[0]))
    print(command)
    return subprocess.check_call(command)

def _main():
    venv_path = pathlib.Path.cwd().joinpath('virt')
    venv_context = _venv_create(venv_path)
    _run_python_in_venv(venv_context, ['-m', 'pip', 'install', '-U', 'pip'])
    _run_bin_in_venv(venv_context, ['pip', 'install', 'attrs'])

if __name__ == '__main__':
    _main()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60066755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档