只使用虚拟环境文件夹运行Python脚本

3
假设我使用 pipenv 创建了一个虚拟环境。在设置中,我在 Pipfile 中指定了 Python 版本,并且还设置了环境变量 PIPENV_VENV_IN_PROJECT,以便在项目文件夹中创建 .venv 文件夹。
.venv 文件夹内,我发现它包含了我在 pipfile 中指定的所有软件包,甚至还有我指定版本的 Python 可执行文件。
如果我将我的脚本和这个 .venv 文件夹复制到另一台没有安装 Python 的机器上,我该如何仅使用 .venv 文件夹运行我的脚本? 这里有一个 Python 可执行文件,但我正在努力弄清楚如何正确获取所有 lib 文件夹。
这是否可能?我知道还有其他方法(例如 使用 Cython/CXFreeze 等预编译代码),但我想知道是否可以仅使用虚拟环境文件夹。

@phd 我认为这不是一个_重复的问题_ -尽管最终目标相同,但我想知道是否可以仅使用虚拟环境进行分发(我假设该环境具有一切所需)。 - John Go-Soco
1个回答

8
那不是 Python 虚拟环境的目的。当您移动脚本时,您必须重新生成虚拟环境。虚拟环境在每台计算机上都可能不同,取决于操作系统等因素。为此,存在 Requeriments.txt,并且这就是为什么 virtualenv 目录总是出现在 .gitignore 文件中的原因。 但是,一旦生成了虚拟环境,您必须使用位于虚拟环境目录中的 python 可执行文件,如下所示(假设您正在使用 unix):
venv/bin/python script.py

或者,使用激活脚本:

venv/bin/activate
python script.py

是的,我知道使用virtualenv的一般工作流程。然而,我希望有人能够利用pipenv相当不错的“锁定”环境的特点。我想.venv文件夹也使得这个锁定的环境在常见的机器之间具有可移植性。 - John Go-Soco
我认为不是这样,因为虚拟环境本身并没有提供 Python 解释器。它允许你在已经有 Python 解释器的机器上创建隔离的环境。 - ILoveYouDrZaius

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