所以你可以使用distutils来创建一个文件,比如
PIL-1.1.6.win32-py2.5.exe
您可以运行并使用它来轻松安装某些东西。但是,安装需要用户输入才能继续(您必须单击“确定”三次)。我想创建一个易于安装的 Windows 版本,您可以将其作为 cmd 行程序运行,不需要用户输入。这可能吗?这些 .exe 文件是否已经这样做了,但是您需要向它们传递一个神奇的 cmd 行参数才能工作?
所以你可以使用distutils来创建一个文件,比如
PIL-1.1.6.win32-py2.5.exe
您可以运行并使用它来轻松安装某些东西。但是,安装需要用户输入才能继续(您必须单击“确定”三次)。我想创建一个易于安装的 Windows 版本,您可以将其作为 cmd 行程序运行,不需要用户输入。这可能吗?这些 .exe 文件是否已经这样做了,但是您需要向它们传递一个神奇的 cmd 行参数才能工作?
请参阅这篇文章,其中描述了修改存根安装程序的想法,如下所示:
它还提到了另一种选择:使用setup.py bdist_msi
代替,这将产生一个 msi 包,可以在无人看管的情况下安装
在使用简单的批处理文件调用 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 文件。它应该为您完成其余的工作。
高温高压
您可以通过运行“setup.py bdist_wininst”来获得可执行文件。您可以通过运行“setup.py bdist_dumb”来获得更简单的东西。这将生成一个 .zip 文件,该文件在安装 Python 的驱动器的根目录下解压缩,前提是它安装在与您构建它的机器相同的目录中,它将安装该库。
现在我不知道Windows下是否有一个解压缩命令行工具可以用来做到这一点;我通常在我所有的 Windows 机器上都安装了 Cygwin,但将它与 .zip 一起发布可能非常简单。