14

我在 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'
    ],
)
4

1 回答 1

5

您应该绝对尝试 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

于 2016-10-15T01:54:52.353 回答