python distutils win32版本问题

时间:2009-07-22 16:26:41

标签: python installer installation windows-installer distutils

因此您可以使用distutils来创建文件,例如

PIL-1.1.6.win32-py2.5.exe

您可以运行并使用它来轻松安装某些东西。但是,安装需要用户输入才能继续(您必须单击“确定”三次)。我想创建一个易于安装的Windows版本,您只需将其作为cmd行程序运行,不需要用户输入。这可能吗?这些.exe文件是否已经完成,但你需要传递一个魔法cmd行参数才能工作吗?

3 个答案:

答案 0 :(得分:1)

请参阅this post,其中描述了修改存根安装程序的想法,如下所示:

它还提到了另一种选择:使用setup.py bdist_msi代替,它将生成一个msi包,可以无人值守安装

答案 1 :(得分:0)

通过运行“setup.py bdist_wininst”获取可执行文件。通过运行“setup.py bdist_dumb”可以让事情更简单。这将生成一个.zip文件,该文件在安装了Python的驱动器的根目录中解压缩,只要它安装在与您构建它的机器相同的目录中,就会安装该库。

现在我不知道Windows下是否有可以用来执行此操作的解压缩命令行实用程序;我通常在我的所有Windows机器上都安装了Cygwin,但是使用.zip发送它可能非常简单。

答案 2 :(得分:0)

在使用简单的批处理文件调用setuptools的安装脚本之前,我已经完成了这个操作,并将egg文件路径作为参数传递给它。唯一的麻烦是你需要确保脚本在PATH中,它可能不是。

假设Python本身在PATH中你可以在python脚本中尝试这样的东西,你可以用你的蛋分配(称之为install.py或者其他)。

import sys
from pkg_resources import load_entry_point

def install_egg(egg_file_path):
    sys.argv[1] = egg_file_path
    easy_install = load_entry_point(
        'setuptools==0.6c9', 
        'console_scripts', 
        'easy_install'
    )
    easy_install()

if __name__ == "__main__":
    install_egg("PIL-1.1.6.win32-py2.5.egg")

基本上这与“easy_install.py”脚本相同。您正在找到该脚本的入口点,并设置sys.argv,以便第一个参数指向您的egg文件。它应该为你做其余的事。

HTH