cx_freeze를 사용할 때 다른 파일을 어떻게 묶을 수 있습니까?
Windows 시스템에서 Python 2.6 및 cx_Freeze 4.1.2를 사용하고 있습니다. 내 실행 파일을 빌드하기 위해 setup.py를 만들었으며 모든 것이 잘 작동합니다.
cx_Freeze가 실행되면 모든 것을 build
디렉토리로 이동합니다 . 내 build
디렉토리에 포함시키고 싶은 다른 파일이 있습니다. 어떻게 할 수 있습니까? 내 구조는 다음과 같습니다.
src\
setup.py
janitor.py
README.txt
CHNAGELOG.txt
helpers\
uncompress\
unRAR.exe
unzip.exe
내 스 니펫은 다음과 같습니다.
설정
( name='Janitor', version='1.0', description='Janitor', author='John Doe', author_email='john.doe@gmail.com', url='http://www.this-page-intentionally-left-blank.org/', data_files = [ ('helpers\uncompress', ['helpers\uncompress\unzip.exe']), ('helpers\uncompress', ['helpers\uncompress\unRAR.exe']), ('', ['README.txt']) ], executables = [ Executable\ ( 'janitor.py', #initScript ) ] )
나는 이것을 작동시킬 수없는 것 같다. MANIFEST.in
파일이 필요 합니까?
그것을 알아 냈습니다.
from cx_Freeze import setup,Executable
includefiles = ['README.txt', 'CHANGELOG.txt', 'helpers\uncompress\unRAR.exe', , 'helpers\uncompress\unzip.exe']
includes = []
excludes = ['Tkinter']
packages = ['do','khh']
setup(
name = 'myapp',
version = '0.1',
description = 'A general enhancement utility',
author = 'lenin',
author_email = 'le...@null.com',
options = {'build_exe': {'includes':includes,'excludes':excludes,'packages':packages,'include_files':includefiles}},
executables = [Executable('janitor.py')]
)
노트 :
include_files
setup.py
스크립트 에 대한 "만"상대 경로를 포함해야합니다 . 그렇지 않으면 빌드가 실패합니다.include_files
문자열 목록, 즉 상대 경로가있는 파일 묶음
또는include_files
can be a list of tuples in which the first half of the tuple is the file name with the absolute path and the second half is the destination filename with the absolute path.
(When the lack of the documentation arises, consult Kermit the Frog)
There's a more complex example at: cx_freeze - wxPyWiki
The lacking documentation of all the options is at: cx_Freeze (Internet Archive)
With cx_Freeze
, I still get a build output of 11 files in a single folder, though, unlike with Py2Exe
.
Alternatives: Packaging | The Mouse Vs. Python
In order to find your attached files (include_files = [-> your attached files <-]
) you should insert the following function in your setup.py code:
def find_data_file(filename):
if getattr(sys, 'frozen', False):
# The application is frozen
datadir = os.path.dirname(sys.executable)
else:
# The application is not frozen
# Change this bit to match where you store your data files:
datadir = os.path.dirname(__file__)
return os.path.join(datadir, filename)
See cx-freeze: using data files
Also you can create separate script that will copy files after the build. It's what I use to rebuild the app on windows (you should have "GNU utilities for win32" installed to make "cp" works).
build.bat:
cd .
del build\*.* /Q
python setup.py build
cp -r icons build/exe.win32-2.7/
cp -r interfaces build/exe.win32-2.7/
cp -r licenses build/exe.win32-2.7/
cp -r locale build/exe.win32-2.7/
pause
ReferenceURL : https://stackoverflow.com/questions/2553886/how-can-i-bundle-other-files-when-using-cx-freeze
'programing' 카테고리의 다른 글
동영상 재생을위한 Android 의도? (0) | 2021.01.18 |
---|---|
emacs lisp, 버퍼 메이저 모드를 얻는 방법? (0) | 2021.01.18 |
제거하는 가장 쉬운 방법은 무엇입니까 (0) | 2021.01.18 |
오버플로 텍스트를 중앙에 배치 할 수 있습니까? (0) | 2021.01.18 |
C # WebBrowser에서 로컬 HTML 파일로드 (0) | 2021.01.18 |