繁体   English   中英

在Win32上不使用安装程序安装Python 2.6

[英]Install Python 2.6 without using installer on Win32

我需要在没有安装Python的机器上运行Python脚本。 我使用Python作为软件包的一部分,并且Python在幕后操作而没有用户注意到它。

我做的如下。

  1. 复制python.exe,python26.dll,msvcr90.dll和Microsoft.VC90.CRT.manifest
  2. 将LIBs目录中的所有目录压缩为python26.zip
  3. 将所有必需的dll / pyd文件复制到DLL目录中。

它似乎工作,但当我将python26.zip更改为pythonlib.zip等其他名称时,它再也找不到Python库了。

  • 问题1:python26.zip名称背后的魔力是什么? Python自动在python26.zip中找到一个库,但不是用不同的名字?
  • 问题2:如果我在python.exe / python26.dll所在的同一目录下有python26.zip,我不需要添加路径sys.path.append (THE PATH TO python26.zip)。 这是对的吗?

Python有内置库, sys就是其中之一。 我以为我可以使用sys.path指向我需要的ZIP文件中的任何Python库。 但是,令人惊讶的是,如果我将库名称用作Python26.zip,它就可以了。 为什么会这样?

我已经使用PortablePython一年了,我发现它很棒,因为它正在我的锁定工作笔记本上工作。

有一个Python 2.5.4,2.6.1和3.0.1版本。

来自Sylvain Pointeau的博客

该过程实际上非常简单,只需从http://www.python.org/getit/下载msi安装程序并输入命令:

C:\\development\\apps>msiexec /a python-3.3.2.msi /qb TARGETDIR=C:\\development\\apps\\python33

他的例子使用msiexec(也就是你的UniExtract人的MSI管理安装程序)强制提取到TARGETDIR 你会发现, 你删除一个内部安装程序。

编辑:你也可以让它沉默,但每次你想使用python这样做似乎是愚蠢的。 只需解压缩到tempdir然后在卸载时清理它们。

PS:我没看到这多大了! :d

我查看了Python解释器源代码,并做了一些实验。 而且我发现Python解释器无论如何都会在“PYTHONXXX.DLL + pythonXXX.zip的目录”前面加上。 XXX是Python解释器的版本。

因此,如果python26.zip与python26.dll在同一目录中。 我可以自动使用所有的Python库。

另一种选择是安装WinPython 它使用安装程序,但不需要管理员权限(在Windows 7上测试)。 与Portable Python不同,它甚至还有Python 3.3.5版本。

另一个选择可能是考虑PyInstaller ,它将创建跨平台的独立Python应用程序。 从主页:

PyInstaller是一个程序,可以在Windows,Linux和Mac OS X下将Python程序转换(打包)成独立的可执行文件。[...] PyInstaller的主要目标是与第三方软件包兼容。开箱。 这意味着,使用PyInstaller,使外部包工作所需的所有技巧已经集成在PyInstaller本身中,因此不需要用户干预。 您永远不会被要求在wiki中查找技巧并对您的文件或设置脚本应用自定义修改。 例如,完全支持像PyQt和Matplotlib这样的库,而无需手动处理插件或外部数据文件。 查看我们的SupportedPackages兼容性列表。

py2exe将允许您将Python脚本编译为Windows可执行文件。 它可能会或可能不会比PortablePython更好地工作,但是对于你需要为“幕后”程序分发的文件数量,它可能会更清晰一些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM