2013-07-02 40 views
10

Ho un pacchetto nel repository PyPI. Includo un installatore di Windows eseguendo il comando seguente per caricare una nuova versione, in particolare il 'bdist_wininst':Python Windows Installer con tutte le dipendenze?

python3 setup.py register sdist bdist_wininst upload 

Tuttavia, quando un utente esegue il file exe associato, non installa Python 3 stessa. Inoltre, anche se Python 3 è installato, non installerà alcuna dipendenza associata.

Qual è il modo migliore per creare un programma di installazione di Windows che installerà Python 3 se non è installato, insieme al mio pacchetto e alle sue dipendenze?

Se ciò non è possibile, qual è il modo migliore per creare un programma di installazione di Windows che installerà il mio pacchetto e le sue dipendenze, assumendo che Python 3 sia installato?

Sono su Ubuntu 12.04. Se si tratta di un intervento, ecco il mio 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='[email protected]', 
    packages=['sigactor'], 
    license='Proprietary', 
    long_description=open('README.txt').read(), 
    install_requires=[ 
     'beautifulsoup4', 
     'feedparser', 
     'python-dateutil', 
     'pyyaml' 
    ], 
) 
+1

gente dovrebbe rispondere a questa solo una volta: http://askubuntu.com/questions/315428/python-windows-installer-with-all-dependencies --- come askubuntu indica le persone allo stackoverflow, forse * questa * domanda dovrebbe diventare il luogo in cui viene data risposta alla domanda :) – mnagel

+0

Le mie scuse - Non ho capito che la domanda sarebbe stata migrata. –

+1

Vuoi realizzare un eseguibile di Windows? Hai provato a usare 'py2exe' o' PyInstaller'? Questi pacchetti ti permetteranno di creare un exe che permetta a un computer senza Python già installato di eseguire il tuo programma. – sytech

risposta

3

Si dovrebbe sicuramente provare pynsist che possono raggruppare Python con i pacchetti e si basa sulla consolidata installer open source NSIS:

https://pypi.python.org/pypi/pynsist

squadra Anaconda fornisce Constructor che si basa su Conda e NSIS ancora:

https://github.com/conda/constructor

Infine questo approccio utilizzando WinPython e installazione più stabile chiamato InnoSetup:

http://cyrille.rossant.net/create-a-standalone-windows-installer-for-your-python-application/

Ma se il vostro pacchetto non è una libreria, ma un programma allora si può racchiudere esso (freeze) con Python e tutte le dipendenze, anche comprimerlo utilizzando pyinstaller:

http://www.pyinstaller.org

Questo è quello che uso per tutte le mie applicazioni anche con dipendenze di interoperabilità folli!

Bonus - Strumento di aggiornamento automatico per pyinstaller:

https://github.com/JMSwag/PyUpdater

+0

+1 per pyinstaller.+0 Non ha menzionato cython. +0 Pyupdater, è il sistema di aggiornamento più confuso del mondo. Ho cercato di farlo aggiornare per 2 giorni ... ora. Sento che SAAS è la strada da percorrere e le app desktop sono purtroppo un'arte che muore. –

Problemi correlati