如何在Python脚本中创建Python虚拟环境

5
我需要使用本地环境,并且为特定工具使用虚拟环境,但是这个工具与我的本地环境存在依赖问题。(我已经知道如何在脚本中使用virtualEnv,在这里我想要在程序运行时创建一个新的虚拟环境。) 我想要在python程序中创建一个python虚拟环境(因为我必须在程序结束时删除此环境)。需要将此环境作为关键字参数env传递给python子进程。
我知道可以使用命令作为参数来创建virtualEnv的方式,但我正在寻找其他方法。

1
@Nikaidoh 不,那是关于如何使用现有的 virtualEnv,而不是解决如何在脚本内创建一个新的 virtualEnv。 - Shubham Dadhich
1
为什么子进程不能满足您的需求? - Tomasz Sabała
2个回答

2

要在Python脚本内创建虚拟环境,您可以使用virtualenv Python模块。

实际上只需要一行代码即可完成。

import virtualenv
import os

venv_dir = os.path.join(os.path.expanduser("~"), ".venv")
virtualenv.create_environment(venv_dir)

您可以通过访问.venv文件夹中的activate_this.py文件来激活此环境,并使用pip模块安装自定义软件包。


有没有办法在virtualenv中安装pip包? - Shubham Dadhich
这个包的install_wheel函数应该可以实现,它是在内部使用的 - 但我从未测试过它是否有效。您可以自己查看代码: https://github.com/pypa/virtualenv/blob/master/virtualenv.py - Epion
我相信你可以使用 subprocess.run 来运行 virtualenv 的 pip。如果我没记错的话,它应该在 bin 文件夹中。 - Pradhyum R

1
from venv import create
from os.path import join, expanduser, abspath
from subprocess import run

dir = join(expanduser("~"), "my-venv")
create(dir, with_pip=True)

# where requirements.txt is in same dir as this script
run(["bin/pip", "install", "-r", abspath("requirements.txt")], cwd=dir)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接