python distutils win32 版本问题
你可以使用distutils来创建一个文件,比如说
PIL-1.1.6.win32-py2.5.exe
这个文件可以运行,用来轻松安装一些东西。不过,这个安装过程需要用户输入才能继续(你需要点击三次“确定”)。我想创建一个可以直接运行的Windows版本,就像一个命令行程序一样,不需要用户输入。这样做可能吗?这些.exe文件已经能做到这一点吗,但你需要给它们传递一个特别的命令行参数才能正常工作?
3 个回答
我之前用一个简单的批处理文件来调用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安装的根目录下(前提是你在和构建它的机器同一个目录下安装Python),就可以安装这个库了。
现在我不太确定在Windows下是否有可以用来解压的命令行工具;我通常在所有的Windows电脑上都安装Cygwin,但其实把它和.zip文件一起打包可能会更简单。
请查看这篇帖子,里面提到了一种修改安装程序的想法,像这样:
帖子还提到另一个选择:使用setup.py bdist_msi
,这样可以生成一个msi格式的安装包,这种安装包可以在不需要用户干预的情况下安装。