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

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

显然这是一个可移植的Python发行版.无论如何,它的 struct 和大小与使用安装程序的标准发行版有很大不同.

我意识到用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 env2

对于django来说,这将是:

env2/Scripts/python -m pip install django  

比较env1env2的内容,它们似乎有相同的文件.唯一显著的区别是Tkinter1,这对于桌面应用程序来说并不重要.

Python Virtualenv和Python Embeddeble之间的区别是什么?

具体来说,使用嵌入式zip(env1)和Virtualenv(env2)创建的独立web应用程序之间的区别是什么?

推荐答案

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

我认为,把它比作虚拟电视没有多大意义.它们有完全不同的用例.

在ms windows世界中,应用程序通常作为独立的整体实体分发.相比之下,基本上每个UNIX版本都有一个工作包管理系统,这使得拥有依赖其他版本的包变得更容易.因此,如果您在UNIX中安装基于python的应用程序,如果尚未安装python,软件包管理系统基本上会为您安装python.在ms windows上,这不起作用.由于(出于技术原因)在ms windows上编译和设置东西比在UNIX上编译和设置东西要高出painful [1]倍,因此出现了几种针对ms windows的Python发行版.因此,对于那些希望发布基于Python的程序或希望将Python嵌入其应用程序的人来说,拥有一个可嵌入的Python是有意义的.

In general though I recommend that ms-windows users install either Canopy or Anaconda because they come with most of the external modules that you'll be likely to need.

Edit截至2020年,python.org的分配已经取得了长足的进步;你不再需要特殊的编译器了,越来越多的模块在PyPI上为ms windows分发预编译的二进制文件.因此,我对微软windows用户的建议已经改变:use the 100 of Python.

Python-3.x相关问答推荐

这是重命名极地df列的最好方式吗?

循环遍历数据框以提取特定值

如何获得大Pandas 的常见时间间隔

使用数据库将文件从Sharepoint下载到文件系统

在循环中使用Print&S结束参数时出现奇怪的问题

TypeError: issubclass() arg 1 在 Flask 中导入 langchain 时必须是一个类

仅当从 USB 摄像头接收到新图像时才处理图像

Pandas:从 Pandas 数据框中的 1 和 0 模式中获取值和 ID 的计数

避免重复连续字符但不包括一个特定字符的正则表达式

如何在数据['column']中的'string'等条件下应用pandas

使用 from re findall 组合连续匹配并分离非连续匹配

如何在 django 中没有循环的情况下获得前键的前键?

错误:预期语句,发现 py:Dedent

日志(log)模块不适用于 Python3

Generic[T] 基类 - 如何从实例中获取 T 的类型?

'~'(波浪号)运算符在 Python 中的应用

在计算之前删除包含某些值的组合

如果一个失败,如何取消收集中的所有剩余任务?

无法在 Windows 8 中使用 Python 3.3 找到 vcvarsall.bat

异常被忽略是什么类型的消息?