具有所有依赖项的 Python Windows 安装程序?
Posted
技术标签:
【中文标题】具有所有依赖项的 Python Windows 安装程序?【英文标题】:Python Windows Installer with all dependencies? 【发布时间】:2013-06-29 23:23:43 【问题描述】:我在 PyPI 存储库中有一个包。我通过运行以下命令上传新版本(特别是“bdist_wininst”)来包含 Windows 安装程序:
python3 setup.py register sdist bdist_wininst upload
但是,当用户运行关联的 .exe 文件时,它不会安装 Python 3 本身。此外,即使安装了 Python 3,它也不会安装任何相关的依赖项。
创建一个 Windows 安装程序的最佳方法是什么?如果没有安装 Python 3 将安装它,以及我的包及其依赖项?
如果这不可能,那么创建一个将安装我的包及其依赖项的 Windows 安装程序的最佳方法是什么?假设已安装 Python 3?
我使用的是 Ubuntu 12.04。如果有任何帮助,这是我的 setup.py:
from distutils.core import setup
import codecs
try:
codecs.lookup('mbcs')
except LookupError:
ascii = codecs.lookup('ascii')
func = lambda name, enc=ascii: True: enc.get(name=='mbcs')
codecs.register(func)
setup(
name='SIGACTor',
version='0.1.14dev',
description=open('README.txt').read(),
url='http://bitbucket.org/davidystephenson/sigactor',
author='David Y. Stephenson',
author_email='david@davidystephenson.com',
packages=['sigactor'],
license='Proprietary',
long_description=open('README.txt').read(),
install_requires=[
'beautifulsoup4',
'feedparser',
'python-dateutil',
'pyyaml'
],
)
【问题讨论】:
人们应该只回答一次:askubuntu.com/questions/315428/… --- askubuntu 将人们指向 ***,也许 this 问题应该成为回答问题的地方:) 抱歉 - 我不明白问题会被迁移。 您要制作 Windows 可执行文件吗?您是否尝试过使用py2exe
或 PyInstaller
?这些包会让你创建一个 exe,允许没有安装 Python 的计算机运行你的程序。
@Gator_Python 我正在尝试为 python 模块创建安装程序。
@Daniel -- 这不正是pip
和 PyPI 的目的吗?我刚刚在我的 Windows 机器上使用 Python3 上的 pip install sigactor
从 PyPI 成功下载并安装了这个包(及其依赖项)。 pip
在 Windows 上随 Python 一起提供。
【参考方案1】:
您应该绝对试用 pynsist,它可以将 Python 与您的包捆绑在一起,并且基于完善的 NSIS 开源安装程序:
https://pypi.python.org/pypi/pynsist
Anaconda 团队再次提供了基于 conda 和 NSIS 的 Constructor:
https://github.com/conda/constructor
最后这种方法使用 WinPython 和最稳定的安装程序 InnoSetup:
http://cyrille.rossant.net/create-a-standalone-windows-installer-for-your-python-application/
但是如果你的包不是一个库而是一个应用程序,那么你可以将它与 Python 和所有依赖项捆绑(冻结),甚至使用 pyinstaller 压缩它:
http://www.pyinstaller.org
即使存在疯狂的互操作依赖关系,这也是我用于所有应用程序的方法!
奖励 - pyinstaller 的自动更新工具:
https://github.com/JMSwag/PyUpdater
【讨论】:
+1 用于 pyinstaller。 +0 没有提到赛通。 +0 Pyupdater,是世界上最令人困惑的更新系统。我一直试图让它更新 2 天......现在。我觉得 SAAS 是必经之路,而桌面应用程序可悲地是一门垂死的艺术。 我对创建自定义环境的工具有过不好的体验,尤其是从单个文件运行所有内容。它们使诊断问题变得不可能,并且不寻常的环境破坏了常见的假设和依赖它们的代码——这同样是无法诊断的。 IE。你可以发货,但祝你好运。 @ivan_pozdeev 那么您对发布 python 应用程序有什么建议? 最自然的选择是类似于 bdist_wininst 的 GUI,它会 pip 安装一堆***。 lfd.uci.edu/~gohlke/code/redist_wininst.py.html 看起来就是这样。This is what I use for all of my apps even with crazy interop dependencies!
- 你能解释一下或提供一些帮助或链接...我有 pypi 模块和二进制文件,当使用规范文件运行 pyinstaller 并启动我的 exe 时,它说没有 numpy .. . 所以,没有捆绑任何依赖。以上是关于具有所有依赖项的 Python Windows 安装程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何将具有依赖项的 python 脚本打包到 zip/tar 中?
如何使用 IntelliJ 制作具有所有依赖项的 jar 文件,也就是 Fat jar