【问题标题】:Install Python 2.6 without using installer on Win32在 Win32 上不使用安装程序安装 Python 2.6
【发布时间】:2010-04-20 21:16:34
【问题描述】:

我需要在没有安装 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(python26.zip 的路径)。对吗?

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

【问题讨论】:

  • 小心手动安装 Python。你可能会让它运行得很好,但是安装任何额外的库是后面的一个主要痛苦。
  • 你能用py2exe打包你的应用吗? (它将在 exe 中包含解释器的副本)
  • 如果名称没有硬编码,Python 将如何找到 zip?但更重要的是,你为什么需要改变它?
  • 我正在尝试做同样的事情,但我被困在第 1 步。如何复制 Microsoft.VC90.CRT.manifest?

标签: python installation


【解决方案1】:

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

有 Python 2.5.4、2.6.1 和 3.0.1 版本。

【讨论】:

  • 以前没听说过 PortablePython。很棒的提示。
  • 您可以将其他模块添加到包含 PP 的 USB 中,因此没有什么能阻止您在复制时使用它
  • ummmm 用户可能对周围发生的事情一无所知,但他们不会注意到 USB 驱动器吗?
  • 为什么这不是公认的解决方案?这完全解决了我的问题。
  • "不再开发便携式 Python"
【解决方案2】:

来自Sylvain Pointeau's blog

过程其实很简单,只要下载msi安装程序就可以了 http://www.python.org/getit/ 并输入命令:

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

他的示例使用 msiexec(即 UniExtract 人员的 MSI 管理安装程序)强制提取到 TARGETDIR。您会注意到那里是您删除的内部安装程序。

编辑:你也可以让它静音,但是每次你想使用 python 时都这样做似乎很愚蠢。只需解压到一个临时目录,然后在他们卸载它时进行清理。

PS:我没看到这是几岁! :D

【讨论】:

  • 我最近不得不用 2.7.11 做类似的事情。此外,您必须手动安装 pip(使用 get-pip.py 脚本)。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      py2exe 将允许您将 Python 脚本编译成 Windows 可执行文件。它可能比 PortablePython 工作得更好,也可能不如 PortablePython,但就您需要为“幕后”程序分发的文件数量而言,它可能会更简洁一些。

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-30
        相关资源
        最近更新 更多