Python可嵌入拉链
在3.5.0版本中,引入了一个称为可嵌入zip文件的发行版 不幸的是,压缩文件没有帮助文件(甚至没有自述文件)。在Python.org上的下载列表中只列出了它 显然,这是一个可移植的Python发行版。它在结构和大小上与使用安装程序的标准发行版有很大不同 我意识到使用pip安装pip是可能的,多亏了pip,添加许多其他应用程序包是轻而易举的事,尽管我仍然无法添加Tkinter(根据shell调整斜线): 添加您需要的内容,例如: 考虑到尺寸(3.5.1-x64为6.5兆),我认为它可以方便地作为一种创建隔离环境的手段 事实上,一般的Python说 嵌入式发行版(几乎)与用户系统完全隔离,包括环境变量、系统注册表设置和安装的软件包 有鉴于此,Windows中现在有两个独立的Python环境,第二个是标准环境 . Virtualenv中的相同过程如下所示:Python可嵌入拉链,python,python-3.x,pip,Python,Python 3.x,Pip,在3.5.0版本中,引入了一个称为可嵌入zip文件的发行版 不幸的是,压缩文件没有帮助文件(甚至没有自述文件)。在Python.org上的下载列表中只列出了它 显然,这是一个可移植的Python发行版。它在结构和大小上与使用安装程序的标准发行版有很大不同 我意识到使用pip安装pip是可能的,多亏了pip,添加许多其他应用程序包是轻而易举的事,尽管我仍然无法添加Tkinter(根据shell调整斜线): 添加您需要的内容,例如: 考虑到尺寸(3.5.1-x64为6.5兆),我认为它可以方便地作为
virtualenv env2
对于django来说,这将是:
env2/Scripts/python -m pip install django
比较env1
和env2
的内容,它们似乎具有相同的文件。唯一显著的区别是,这对于桌面应用程序来说并不重要
Python Virtualenv和Python Embeddeble之间的区别是什么
具体来说,这是使用可嵌入zip(env1
)和Virtualenv(env2
)创建的独立web应用程序之间的区别?正如您从中看到的,它主要用于在ms windows上运行基于Python的应用程序,以及在应用程序中嵌入Python。如您所见,他们遗漏了tkinter
。也许可以把尺码小一点
我认为,把它比作虚拟电视没有多大意义。它们有完全不同的用例
在ms windows世界中,应用程序通常作为独立的整体实体分发。相比之下,基本上每个UNIX版本都有一个工作包管理系统,这使得拥有依赖于其他版本的包变得更加容易。因此,如果您在UNIX中安装基于python的应用程序,如果尚未安装python,包管理系统基本上会为您安装python。在ms windows上,这不起作用。一些针对ms windows的Python发行版如雨后春笋般涌现,因为(出于技术原因)在ms windows上编译和设置东西与UNIX相比是痛苦的。因此,对于那些想要发布基于Python的程序或者想要将Python嵌入到应用程序中的人来说,拥有一个可嵌入的Python是有意义的
但总体而言,我建议微软windows用户安装Canopy或Anaconda,因为它们附带了您可能需要的大多数外部模块
编辑截至2020年,
python.org
发行版已经走过了漫长的道路;您不再需要特殊的编译器,越来越多的模块在PyPI上为ms windows分发预编译的二进制文件。因此,我对ms windows用户的建议已更改:使用Python谢谢,这证实了“此发行版(几乎)与用户系统完全隔离,包括环境变量、系统注册表设置和安装的软件包。”我的第二点很有意义,那么,@antonio这个答案非常准确(尽管我不知道冠层或巨蟒的代言)。可能更清楚的是,virtualenv用于隔离已安装的软件包,而嵌入式Python用于隔离整个Python运行时。当您可以共享运行时而不共享已安装的软件包(大多数web应用都属于这一类)时,可以使用virtualenv;当您不想共享全局安装时,可以使用嵌入式Python(这对许多桌面应用程序都有意义)。从开发的角度来看,使用可嵌入版本可能会有点麻烦。@jpmc26:我发现它们对每个环境都使用不同的运行时。或者你是在说virtualenv选项?+1个优点。最后一件事。Virtualenv通常与virtualenvwrapper一起使用,这需要一些类似bash的环境。不幸的是,随软件包系统(ArchLinuxPacman)附带的安装了不兼容的Python,因此Virtualenv/VirtualEnvRapper无法工作。因此,脚本下载/提取可嵌入Python zip的副本非常方便。在可嵌入Python中安装django之后,是否可以在服务器站点上要求相同的库并像使用Virtualenv一样传输项目?还是又是一种痛苦?@jpmc26缺少特金特也让我困惑。考虑到嵌入式Python的双重用途,我猜它主要是针对那些希望在应用程序中嵌入Python的人。如果你知道怎么做,请回答。
virtualenv env2
env2/Scripts/python -m pip install django