当前位置: 首页 > 面试题库 >

Python可嵌入的zip

唐骏祥
2023-03-14
问题内容

在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

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

env1/python -m pip install django

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

实际上,一般的Python文档说

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

鉴于此,在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应用程序之间有什么区别?


问题答案:

从文档中可以看到,它主要用于在ms-
windows上运行基于Python的应用程序,以及将Python嵌入应用程序中。如您所见,它们被忽略了tkinter。也许要减小尺寸?

我认为,将其与virtualenv进行比较没有多大意义。他们有完全不同的用例。

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

总的来说,尽管我建议ms-windows用户安装Canopy或Anaconda,因为它们附带了您可能需要的大多数外部模块。

编辑 截至2020年,python.org发行已经走了很长一段路。您不再需要特殊的编译器,并且越来越多的模块为PyPI上的ms-
windows分发预编译的二进制文件。因此,我对ms-windows用户的建议已更改: 使用
Python的python.org版本



 类似资料:
  • 问题内容: 我安装了嵌入式Python这里,标题为“的Windows X86-64嵌入zip文件”,但它并没有安装PIP,它没有站点包或者,当我尝试做它无法运行,因为这个文件已经在它。那么如何在嵌入式python环境中安装pip。 追溯(最近一次通话最近):main()中的文件“。\ getpip.py”,第20061行,主引导程序中的文件“。\ getpip.py”,第194行(tmpdir =

  • 我有一个相当典型的场景,其中有一个main@实体,他内部的所有内容都是可嵌入的(因此,没有父实体,内部的所有内容都没有意义)。现在JPA 2.0阻止我在另一个@ElementCollection中定义的@Embeddeble中嵌套一个@ElementCollection: JSR-317 2.6可嵌入类和基本类型的集合包含在元素集合中的可嵌入类(包括另一个可嵌入类中的可嵌入类)不得包含元素集合,也

  • 我想向实体类添加嵌入关系。 在我的数据库中,我有表蛋白质: 和表基准: 在基准测试中,字段目标是蛋白质表的外键 我已经从蛋白质表中找到了一个名为SupProtein的实体,它运行良好。 现在,我想向基准类添加一个嵌入关系。 这是我的基准课程: 在我的实体课程中,我添加了: 但当我尝试构建时,会出现以下错误: 我没有创建任何ORM. xml文件,在任何地方都找不到。我需要一个orm.xml文件来创建

  • 问题内容: 我想知道是否有可能在另一个Embeddable中包含Embeddable的ElementCollection? 这是我的供应商实体的示例,该实体具有可嵌入类型的地址列表: 这是我的可嵌入地址,其中包含可嵌入电话的列表 这是嵌入式电话的定义 我目前正在使用JPA 2 + Hibernate 3.6.x对此进行测试 在地址中使用嵌入式电话在我的测试中导致错误。这是最底层的部分调试消息: 删

  • 问题内容: 我将Python解释器嵌入到C程序中。但是,可能会发生以下情况:通过运行某些python脚本时,将陷入无限循环或执行时间过长。考虑防止主程序阻塞,我认为我可以在线程中运行解释器。 如何在不杀死整个过程的情况下停止在线程中运行的嵌入式解释器中执行python脚本? 是否可以将异常传递给解释器?我应该将脚本包装在其他可以监听信号的脚本下吗? PS:我可以在一个单独的进程中运行python,

  • EJB 3.0提供了将JAVA POJO(Plain Old Java Object)嵌入到实体bean中的选项,并允许使用嵌入式POJO类的方法映射列名。 要嵌入的Java POJO必须注释为@Embeddable。 @Embeddable public class Publisher implements Serializable{ private String name; pri

  • 问题内容: 我正在尝试在用Python编码的Tkinter GUI中嵌入图。我相信下面的代码可以成功地将图形简单地放入画布中,但是我对GUI网格中的画布位置没有任何控制。我希望能够让我的GUI的一部分成为情节……而不是全部。如何放置此画布小部件? 问题答案: 您没有任何其他小部件,因此很难知道您想要其他小部件的位置。不过,我可以告诉您的是:通过这样做,您正在让Tkinter用绘图填充屏幕。这是因为

  • http://www.equibase.com/premium/chartemb.cfm?track=alb&racedate=06/17/2002&cy=usa&rn=1 我想下载嵌入式PDF。 我尝试了和的普通方法,但它们都不起作用。 null