2013-07-02 69 views
10

Tôi có một gói trong kho lưu trữ PyPI. Tôi bao gồm một trình cài đặt Windows bằng cách chạy lệnh sau để tải lên một phiên bản mới, đặc biệt là 'bdist_wininst':Trình cài đặt Windows Python với tất cả các phụ thuộc?

python3 setup.py register sdist bdist_wininst upload 

Tuy nhiên, khi người dùng chạy file .exe đi kèm, nó không cài đặt Python 3 chính nó. Hơn nữa, ngay cả khi Python 3 được cài đặt, nó sẽ không cài đặt bất kỳ phụ thuộc liên quan nào.

Cách tốt nhất để tạo trình cài đặt cửa sổ sẽ cài đặt Python 3 nếu nó chưa được cài đặt, cùng với gói của tôi và phụ thuộc của nó là gì?

Nếu không thể, cách tốt nhất để tạo trình cài đặt cửa sổ sẽ cài đặt gói của tôi và phụ thuộc của nó là gì, giả sử Python 3 được cài đặt?

Tôi đang sử dụng Ubuntu 12.04. Nếu đó là của bất kỳ sự trợ giúp, đây là setup.py của tôi:

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='da[email protected]', 
    packages=['sigactor'], 
    license='Proprietary', 
    long_description=open('README.txt').read(), 
    install_requires=[ 
     'beautifulsoup4', 
     'feedparser', 
     'python-dateutil', 
     'pyyaml' 
    ], 
) 
+1

mọi người nên trả lời này chỉ một lần: http://askubuntu.com/questions/315428/python-windows-installer-with-all-dependencies --- như askubuntu điểm mọi người trở lại stackoverflow, có lẽ * this * câu hỏi nên becom nơi mà câu hỏi được trả lời :) – mnagel

+0

lời xin lỗi của tôi - Tôi không hiểu câu hỏi sẽ được di chuyển. –

+1

Bạn có muốn thực thi Windows không? Bạn đã thử sử dụng 'py2exe' hoặc' PyInstaller' chưa? Những gói này bạn sẽ tạo một exe cho phép một máy tính không có Python đã được cài đặt để chạy chương trình của bạn. – sytech

Trả lời

3

Bạn definetely nên thử pynsist có thể bó Python với các gói của bạn và dựa trên cũng như thành lập NSIS mã nguồn mở trình cài đặt:

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

Anaconda đội cung cấp Constructor mà là dựa trên conda và NSIS lần nữa:

https://github.com/conda/constructor

Cuối cùng phương pháp này sử dụng WinPython và cài đặt ổn định nhất gọi InnoSetup:

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

Nhưng nếu gói của bạn không phải là một thư viện nhưng một ứng dụng thì bạn có thể bó nó (đóng băng) với Python và tất cả phụ thuộc, thậm chí nén nó sử dụng PyInstaller:

http://www.pyinstaller.org

Đây là những gì tôi sử dụng cho tất cả các ứng dụng của tôi ngay cả với phụ thuộc interop điên!

Bonus - tự động cập nhật công cụ cho PyInstaller:

https://github.com/JMSwag/PyUpdater

+0

+1 cho bộ cài đặt pypler.+0 Không đề cập đến cython. +0 Pyupdater, là hệ thống cập nhật khó hiểu nhất thế giới. Tôi đã cố gắng để có được nó để cập nhật trong 2 ngày ... bây giờ. Tôi cảm thấy SAAS là con đường để đi và các ứng dụng máy tính để bàn là một nghệ thuật hấp hối đáng buồn. –