Python嵌入式zip

ant*_*nio 29 python pip python-3.x

在3.5.0版本中,Python.org引入了一个分发为 嵌入式zip文件的发行版.

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

显然这是一个可移植的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
Run Code Online (Sandbox Code Playgroud)

添加你需要的东西,例如django:

env1/python -m pip install django  
Run Code Online (Sandbox Code Playgroud)

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

事实上,一般的Python 文档说明了这一点

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

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

virtualenv env2
Run Code Online (Sandbox Code Playgroud)

对于django,它将是:

env2/Scripts/python -m pip install django  
Run Code Online (Sandbox Code Playgroud)

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

Python Virtualenv和Python嵌入式的区别是什么?

具体来说,使用embeddable zip(env1)和Virtualenv(env2)创建的隔离Web应用程序之间的区别是什么?

Rol*_*ith 10

文档中可以看出,它主要用于在ms-windows上运行基于Python的应用程序以及在应用程序中嵌入Python.如你所见,他们遗漏了tkinter.也许要保持尺寸下降?

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

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

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

  • @antonio这个答案非常有用(虽然我不知道Canopy或Anaconda的代言).可能更清楚的是virtualenv用于隔离*安装的包*,而可嵌入的Python用于隔离整个Python运行时*.当你不想共享运行时而不是已安装的软件包(大多数网络应用属于这一类)时,你可以使用virtualenv;当你不想共享全局安装时,你可以使用嵌入式Python(这对许多桌面应用程序都有意义.).从开发的角度来看,使用嵌入式版本可能会有点麻烦. (2认同)