python distutils win32 版本问题

3 投票
3 回答
1197 浏览
提问于 2025-04-15 13:05

你可以使用distutils来创建一个文件,比如说

PIL-1.1.6.win32-py2.5.exe

这个文件可以运行,用来轻松安装一些东西。不过,这个安装过程需要用户输入才能继续(你需要点击三次“确定”)。我想创建一个可以直接运行的Windows版本,就像一个命令行程序一样,不需要用户输入。这样做可能吗?这些.exe文件已经能做到这一点吗,但你需要给它们传递一个特别的命令行参数才能正常工作?

3 个回答

0

我之前用一个简单的批处理文件来调用setuptools的安装脚本,并把egg文件的路径作为参数传给它。唯一的问题是,你需要确保这个脚本在PATH环境变量中,不然可能找不到。

假设Python本身已经在PATH中,你可以在一个你打算和egg一起分发的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文件。之后它会为你完成剩下的工作。

希望这对你有帮助。

0

你可以通过运行“setup.py bdist_wininst”来生成可执行文件。如果想要更简单的方式,可以运行“setup.py bdist_dumb”。这样会生成一个.zip文件,把这个文件解压到Python安装的根目录下(前提是你在和构建它的机器同一个目录下安装Python),就可以安装这个库了。

现在我不太确定在Windows下是否有可以用来解压的命令行工具;我通常在所有的Windows电脑上都安装Cygwin,但其实把它和.zip文件一起打包可能会更简单。

1

请查看这篇帖子,里面提到了一种修改安装程序的想法,像这样:

帖子还提到另一个选择:使用setup.py bdist_msi,这样可以生成一个msi格式的安装包,这种安装包可以在不需要用户干预的情况下安装。

撰写回答