2009-02-01 7 views
9

현재 저는 자동 도구를 사용하여 프로젝트를 빌드/설치하고 패키지화하고 있습니다. 그러나 필자는 더 많은 "파이썬"이있는 느낌으로 이동하고 싶습니다.Gnome에서 파이썬 패키지의`.desktop` 파일과 아이콘을 배포하는 방법 (distutils 또는 setuptools 사용)?

내 프로젝트는 두 개의 스크립트, 하나의 모듈, 두 개의 빈틈없는 GUI 설명 및 두 개의 .desktop 파일로 구성됩니다. 그것은 현재 순수한 파이썬 프로젝트이지만, 곧 바뀌기 쉽습니다.

setuptools를 보면 .desktop 파일을 제외한 모든 것을 처리하는 방법을 쉽게 볼 수 있습니다. Gnome에서 찾을 수 있도록 특정 디렉토리에 있어야합니다.

distuils/setuptools를 사용하는 것이 좋습니다.

답변

4

나는이 작업을 할 수 있었지만 좀 더 해결 방법과 같은 느낌이었습니다.

from setuptools import setup 

setup(
    # ... 
    data_files=[ 
    ('share/icons/hicolor/scalable/apps', ['data/mypackage.svg']), 
    ('share/applications', ['data/mypackage.desktop']) 
    ], 
    entry_points={ 
    'console_scripts': ['startit=mypackage.cli:run'] 
    } 
) 

스타터 스크립트 저점 entry_points 작품 :

이 문제를 해결할 수있는 좋은 방법이 무엇인지 알 수

... 난 다음 setup.py 파일을 (풀 버젼 here입니다)를 사용. 그러나 data_files은 지정된 폴더가 아닌 알 파일에 저장되므로 데스크톱 셸에서 액세스 할 수 없습니다. 이 작품

[install] 
single-version-externally-managed=1 
record=install.txt 

:

는이 문제를 해결하기 위해, 나는 다음과 같은 setup.cfg 파일을 사용했다. 두 데이터 파일 모두 올바른 위치에 생성되고 .desktop 파일은 Gnome에 의해 인식됩니다.

+1

.desktop 파일에서/usr/bin이 Exec에 대해 하드 코딩되어야하므로 이것은 좋은 시작이지만 --user에서는 작동하지 않습니다. . 경로를 빠져 나갈 수는 있지만 데스크톱 환경의 $ PATH에 있어야합니다. ~/.local/bin은 일반적으로 그렇지 않습니다. 또한 --single-version-externally-managed는 egg를 사용하지 않기 때문에 pip가 필요하지 않습니다. – jwelsh

1

일반적으로 예 - 모든 것이 파이썬 프로젝트를 빌드 할 때 autotools보다 낫습니다.

지금까지 setuptools에 대한 좋은 경험이 있습니다. 그러나 고정 된 위치에 파일을 설치하는 것은 setuptools의 강점이 아닙니다. 결국 파이썬 응용 프로그램의 설치자를 빌드하는 것이 아니라 파이썬 라이브러리를 배포하는 것입니다.

응용 프로그램 데이터 파일 (이미지, UI 파일 등)이 아니지만 운영 체제에 통합되는 파일을 설치하려면 실제 패키징 형식 (예 : RPM 또는 deb)을 사용하는 것이 좋습니다.

즉, setuptools를 기반으로 빌드 프로세스를 수행하는 것을 멈추게하고 모든 것을 정당한 위치에 설치하기위한 작은 make 파일을 만들지 않습니다.

+0

그래서 파이썬으로 작성된 응용 프로그램을 빌드/패키징하는 데 파이썬 적이라는 말입니까? 그것은 약간 실망 스럽습니다. – Magnus

+1

패키지 응용 프로그램은 프로그래밍 언어가 아닌 운영 체제에 따라 다릅니다. Windows의 응용 프로그램 패키지 (설치 프로그램 등)는 .deb 패키지 나 Mac OS X 응용 프로그램과 다른 요구 사항을 충족해야합니다. –

+0

좋은 빌드 환경을 선택하면 운영 체제 패키지가 크게 단순화됩니다. 또한 많은 빌드 환경은 단순한 패키징 시스템의 두 배이며, 종종 소스 만 제공합니다. 자동 도구, distutils, 루비 보석, 아마도 ... "배포 시스템"은 더 나은 용어입니다. – Magnus

1

python-distutils-extra을 사용해보세요. DistUtilsExtra.auto 모듈 자동 supports의 .desktop 파일을뿐만 아니라 습지/GtkBuilder .ui 파일, 파이썬 모듈과 스크립트, 기타 데이터 파일 등

그것은의 distutils와 setuptools에로 모두 작동합니다.

1

나는 https://pypi.python.org/pypi/install-freedesktop을 만들었습니다. 설치 인수를 통해 사용자 정의 할 수있는 gui_scripts 진입 점에 대해 .desktop 파일을 자동으로 생성하고 --user 및 시스템 전체 설치를 지원합니다.DistUtilsExtra과 비교하면 범위가 더 좁고 IMHO가 더 pythonic (암시 적보다 뚜렷합니다)입니다.