문제

나는 생각이 들었는 py2exe 을 할 수 있었다,하지만 내가 결코 그것을 알아 냈다.는 사람이 성공적으로 수행하는 이?을 볼 수 있습니 h setup.py 파일,그리고 무엇을 명령행 옵션을 사용됩니까?

기본적으로 나는 생각하고 그것은 나에게 단일의 실행 파일이 같은 방향으로 자신이 어쩌면/temp 고 실행됩니다.

도움이 되었습니까?

해결책

PyInstaller 을 만들 것입니다.exe 파일이 없는 종속성사 --onefile 옵션입니다.이를 위해 포장하는 모든 필요한 공유 라이브러리를 실행 및 그들을 풀고 실행되기 전에,그냥 당신을 설명하(편집:py2exe 또한 이 기능을 참조하십시오 박하의 응답)

내가 사용하여 버전의 PyInstaller 에서 svn,이후 최신 릴리스(1.3)은 약간 오래되었습니다.그것은 정말로 잘 대하는 응용 프로그램에 따라 달라집 PyQt,PyQwt,numpy,scipy 고 몇 가지 더 있습니다.

다른 팁

이 방법을 사용하여 이 작업을 수행 py2exe 를 사용하는 것입 bundle_files 옵션 setup.py 파일입니다.단일 파일에 대한 설정하려면 원하는 bundle_files 1 compressed True 로 설정 zip 파일은 옵션이 없습니다.는 방법을 하나 만드는 압축 파일을 쉽게 배포합니다.

여기에 대한 자세한 설명의 bundle_file 옵션에서 직접 인용 py2exe 사이트*

를 사용하여"bundle_files"및"zip 파일은"

쉽게(그리고 더 나은)방법을 만들기 단일 파일을 실행파일을 설정하는 것입 bundle_files1 또는 2 세 zip 파일은 없습니다.이 방법 이 필요하지 않 추출 파일 임시 위치,제공하는 훨씬 더 빨리 프로그램을 시작합니다.

유효한 값 bundle_files 습니다:

  • 3(기본값)하지 않는 번들
  • 2 번들지만 모든 파이썬
  • 1 번들 모두 포함 파이썬

는 경우 zip 파일이 없음으로 설정하는 파일이 번들 내 대신 실행 library.zip.

샘플은 다음과 같습니다 setup.py:

from distutils.core import setup
import py2exe, sys, os

sys.argv.append('py2exe')

setup(
    options = {'py2exe': {'bundle_files': 1, 'compressed': True}},
    windows = [{'script': "single.py"}],
    zipfile = None,
)

로 다른 포스터는 물론,py2exe 생성,실행+일부 라이브러리합니다.할 수도 있습니다 어떤 데이터가 추가하는 프로그램입니다.

다음 단계는 사용하는 설치 프로그램을 패키지로 이 모든 것으로 하나 사용하기 쉬운 설치할 수 있/unistallable 프로그램입니다.

내가 사용 InnoSetup( http://www.jrsoftware.org/isinfo.php 이)기쁨을 위해 몇 년을 위한 상업적인 프로그램,그래서 저는 진심으로 그것을 권장합니다.

설치 관리자를 만들어야 합로 언급하기 전에.비록 그것은 또한 가능하게 py2exe 번들로 모든 것을 하나의 실행 파일로 설정하여 bundle_files 하는 옵션 1zip 파일은 키워드를 인수하도,내가 추천하지 않는 이에 대한 파이썬다.

그 때문에 프로그램를 로드하려고 하는 데이터 파일(주민들,테마,etc.) 디렉토리에서 그것이 로드되었습니다.그래서 당신이 있는지 확인하는 디렉토리의 실행 파일을 포함한 라이브러리에 의해 사용 GTK+및 lib 디렉토리,공유하고 등에서 당신의 설치 GTK+.그렇지 않으면 당신을 얻을 것이 문제 응용 프로그램을 실행에서 컴퓨터 프로그램이 설치되지 않습니다.

자세한 내용을 읽 가이드 py2exe 에 대한 PyGTK 응용 프로그램.그것은 또한하는 방법에 대해 설명합 번들 모든하지만,GTK+.

I've been able to create 단일 exe 파일과 함께 모든 자원을 임베디드로 exe.나는 건물이드 응용 프로그램을 시작합니다.그래서 설명할 것이 몇 가지 있습니다.시스템 호출이 사용하고.

첫째 변환 모든 이미지들로 bitmats 다음 내 모든 데이터 파일로 텍스트 문자열입니다.하지만이 발생한 최종 exe 매우 매우 많습니다.

후 googleing 에 대한 일주일이아웃을 변경하 py2exe 스크립트를 내가 필요로 하는 사항을 만족시키.

여기에는 패 링크에 제출하십시오 댓글 그래서 우리는 그것을 얻을 수 있습니다 포함되어 있에 다음 배포합니다.

http://sourceforge.net/tracker/index.php?func=detail&aid=3334760&group_id=15583&atid=315583

이 explanes 모든 변경 사항을,나는 단순히 새로운 옵션을 추가했을 설정 라인입니다.여기에 나 setup.py.

i'll try 의견을 최대한으로 내가 할 수 있습니다.알기에는 나의 주시기 바 setup.py 은 복잡하지는 사실 나는 이미지에 액세스하여 파일 이름입니다.그래서 나는 저장해야 합니다 목록의 하나입니다.

이것은에서 원하는 화면 보호기하려 했다.

내가 사용하는 exec 를 생성하는 내에서 설치 프로그램 실행 시간,그아요 잘라내어 붙여 넣는다.

exec "setup(console=[{'script': 'launcher.py', 'icon_resources': [(0, 'ICON.ico')],\
      'file_resources': [%s], 'other_resources': [(u'INDEX', 1, resource_string[:-1])]}],\
      options={'py2exe': py2exe_options},\
      zipfile = None )" % (bitmap_string[:-1])

고장

스크립트=py 스크립트가 원하는 exe

icon_resources=에 대한 아이콘 exe

file_resources=파일하고 싶 포함 exe

other_resources=문자열을 포함 exe,이 경우 파일 목록입니다.

옵션=py2exe 를 만들기 위한 옵션으로 모든 것을 하나 exe 파일

bitmap_strings=의 목록을 포함할 파일

주 file_resources 유효하지 않은 옵션을 때까지 당신은 편집 py2exe.py 파일에서 설명한 대로 링크다.

first time i've 게시하려고 코드 사이트에,내가 그것을 잘못하지 않는 불꽃이다.

from distutils.core import setup
import py2exe #@UnusedImport
import os

#delete the old build drive
os.system("rmdir /s /q dist")

#setup my option for single file output
py2exe_options = dict( ascii=True,  # Exclude encodings
                       excludes=['_ssl',  # Exclude _ssl
                                 'pyreadline', 'difflib', 'doctest', 'locale',
                                 'optparse', 'pickle', 'calendar', 'pbd', 'unittest', 'inspect'],  # Exclude standard library
                       dll_excludes=['msvcr71.dll', 'w9xpopen.exe',
                                     'API-MS-Win-Core-LocalRegistry-L1-1-0.dll',
                                     'API-MS-Win-Core-ProcessThreads-L1-1-0.dll',
                                     'API-MS-Win-Security-Base-L1-1-0.dll',
                                     'KERNELBASE.dll',
                                     'POWRPROF.dll',
                                     ],
                       #compressed=None,  # Compress library.zip
                       bundle_files = 1,
                       optimize = 2                        
                       )

#storage for the images
bitmap_string = '' 
resource_string = ''
index = 0

print "compile image list"                          

for image_name in os.listdir('images/'):
    if image_name.endswith('.jpg'):
        bitmap_string += "( " + str(index+1) + "," + "'" + 'images/' + image_name + "'),"
        resource_string += image_name + " "
        index += 1

print "Starting build\n"

exec "setup(console=[{'script': 'launcher.py', 'icon_resources': [(0, 'ICON.ico')],\
      'file_resources': [%s], 'other_resources': [(u'INDEX', 1, resource_string[:-1])]}],\
      options={'py2exe': py2exe_options},\
      zipfile = None )" % (bitmap_string[:-1])

print "Removing Trash"
os.system("rmdir /s /q build")
os.system("del /q *.pyc")
print "Build Complete"

ok,그것은 그게 전부에 대해 setup.py 이제는 마법의 필요한 이미지에 액세스.내가 개발되지 않고 응용 프로그램 py2exe 마음에 다음을 추가됩니다.그래서 당신은에 액세스를 참조하십시오 모두를위한 상황입니다.는 경우 이미지 폴더를 찾을 수 없 그것을 당하고 이미지에서 exe 리소스입니다.코드 설명할 것입니다.이것은 부분의 내 sprite 클래스를 사용하 directx.그러나 하나를 사용할 수 있습 api 당신이 원하는 또는 단지 원시 데이터에 액세스.중요하지 않습니다.

def init(self):
    frame = self.env.frame
    use_resource_builtin = True
    if os.path.isdir(SPRITES_FOLDER):
        use_resource_builtin = False
    else:
        image_list = LoadResource(0, u'INDEX', 1).split(' ')

    for (model, file) in SPRITES.items():
        texture = POINTER(IDirect3DTexture9)()
        if use_resource_builtin: 
            data = LoadResource(0, win32con.RT_RCDATA, image_list.index(file)+1) #windll.kernel32.FindResourceW(hmod,typersc,idrsc)               
            d3dxdll.D3DXCreateTextureFromFileInMemory(frame.device,   #Pointer to an IDirect3DDevice9 interface
                                              data,                #Pointer to the file in memory
                                              len(data),           #Size of the file in memory
                                              byref(texture))      #ppTexture
        else:
            d3dxdll.D3DXCreateTextureFromFileA(frame.device, #@UndefinedVariable
                                               SPRITES_FOLDER + file,
                                               byref(texture))            
        self.model_sprites[model] = texture
    #else:
    #    raise Exception("'sprites' folder is not present!")

어떤 질문은 무료로 떨어졌습니다.

bbfreeze 을 만들 것입 단일 파일입니다.EXE 고,최신보다 py2exe.

c_x 얼 을 만들 수 있습니다 그것은 좋은 독립

나는 최근에 사용되는 py2exe 을 만들기 실행 후 보내기 위해 검토 리뷰를 ReviewBoard.

이 setup.py 내가 사용하는

from distutils.core import setup
import py2exe

setup(console=['post-review'])

그것은 디렉토리를 만든 포함하는 exe 파일과 라이브러리를 필요합니다.나는 생각하지 않을 사용하는 것이 가능하 py2exe 을 얻는 단 하나의.exe 파일입니다.필요하신 경우는 당신이 필요가 처음 사용 py2exe 를 사용하여 다음의 일부 양식을 설치 관리자를 최종 실행 파일을 실행합니다.

하나의 돌은 계란 파일에서 사용하는 응용 프로그램이 필요할 압축,그렇지 않으면 py2exe 할 수 없습니다 그들이 포함됩니다.이에 덮여 py2exe docs.

아니,그것은 포기하지 않는 단일 실행한다는 의미에서 당신은 하나의 파일 이후에만 있는 디렉토리에 필요한 모든 것을 포함하고 실행하기 위한 프로그램을 포함한 exe 파일입니다.

나는 단지를 썼 이 setup.py 오늘입니다.당신만을 호출하는 데 필요 python setup.py py2exe.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top