Python嵌入式zip

时间:2016-06-04 18:16:43

标签: python python-3.x pip

在3.5.0版本中,Python.org引入了一个名为 embeddable zip file 的分发。

不幸的是,压缩文件没有帮助文件(甚至没有自述文件)。 Python.org上的download page只是在下载中列出了它。

显然这是一个可移植的Python发行版。无论如何,它的结构和大小与使用安装程序的标准分发完全不同。

我意识到可以用get-pip.py安装pip,并且由于pip,添加许多其他应用程序包是轻而易举的,尽管我仍然无法添加Tkinter(根据你的shell调整斜杠) ):

curl https://www.python.org/ftp/python/3.x.x/python-3.x.x-embed-amd64.zip > epython.zip
unzip -o epython.zip -d env1
curl -L https://bootstrap.pypa.io/get-pip.py>env1/get-pip.py
env1/python env1/get-pip.py

添加您需要的内容,例如django

env1/python -m pip install django  

考虑到尺寸(3.5.1-x64的6.5兆),我认为它可以方便地创建隔离环境。

事实上,一般的Python documentation表示

  

嵌入式发行版(几乎)与用户系统完全隔离,包括环境变量,系统注册表设置和已安装的软件包

鉴于此,在Windows中,现在有两个独立的Python环境,第二个是标准 Virtualenv。 Virtualenv中的相同过程如下:

virtualenv env2

对于django来说,它将是:

env2/Scripts/python -m pip install django  

比较env1env2的内容,它们似乎具有相同的文件。唯一显着的区别是Tkinter1,这对于桌面应用来说无论如何都不是很重要。

Python Virtualenv和Python embeddable之间有什么区别?

具体而言,使用嵌入式zip(env1)和Virtualenv(env2)创建的隔离Web应用程序之间的区别是什么?

1 个答案:

答案 0 :(得分:8)

documentation可以看出,它主要用于在ms-windows上运行基于Python的应用程序以及在应用程序中嵌入Python。如您所见,他们遗漏了tkinter。也许是要缩小尺寸?

我认为将它与virutualenv相比并没有多大意义。他们有完全不同的用例。

在ms-windows世界中,应用程序通常作为单独的独立实体分发。相比之下,基本上每个UNIX风格都有一个工作包管理系统,这使得更容易拥有依赖于其他包的包。因此,如果您在UNIX中安装基于python的应用程序,则包管理系统将基本上为您安装Python(如果尚未安装)。在ms-windows上,这不起作用。 ms-windows的几个Python发行版如雨后春笋般涌现,因为(出于技术原因)在ms-windows上编译和设置内容是痛苦 [1] [2] [3]比较到UNIX。因此,对于想要分发基于Python的程序或希望将Python嵌入其应用程序的人来说,拥有可嵌入的Python是有意义的。

总的来说,虽然我建议ms-windows用户安装Canopy或Anaconda,因为它们带有你可能需要的大部分外部模块。