distutils를 통해 내 프로그램을 설치하는 방법을 알아 내려고하고 있습니다. 내 최종 목표는 우분투 사용자를위한 .deb 설치 프로그램을 만드는 것입니다. 주요 문제는 "원 클릭"실행기 파일을 작동시키는 것입니다.distutils를 사용하여 "one-click"실행기 파일로 파이썬 응용 프로그램을 설치하려고합니다.
내 프로그램은 pygtk 및 sqlite3을 gui 및 데이터베이스에 사용합니다. gliade를 사용하여 GUI를 구축 했으므로 프로그램이 두 개의 파일로 연결됩니다. 그리고 나서 .sqlite3 파일에 데이터를 저장합니다. 다음은이 나의 현재의 setup.py 파일입니다
root/
|_ src/
| |_ RTcore/
| |_ data/
| | |_ data.sqlite3
| |_ ui/
| | |_ main.glade
| | |_ addRecipe.glade
| |_ __init__.py
| |_ main.py #this is where I store the meat of my program
| |_ module.py #recipetrack is supposed to run this module which ties into the main.py
|_ setup.py
|_ manifest.in
|_ README
|_ recipetrack #this is my launcher script
지금까지 내 패키지 구조는 ...
#!/usr/bin/env python
from distutils.core import setup
files = ["Data/*", "ui/*"]
setup(
name = "RecipeTrack",
version = "0.6",
description = "Store cooking recipes and make shopping lists",
author = "Heber Madsen",
author_email = "[email protected]",
url = "none at this time",
packages = ["RTcore", "RTcore/Data","RTcore/ui"],
package_data = {"RTcore": files},
scripts = ["recipetrack"],
long_description = """Something long and descriptive""",
)
내 "recipetrack"스크립트의 코드는 ...
입니다#!/usr/bin/env python #it appears that if I don't add this then following 2 lines won't work.
#the guide I was following did not use that first line which I found odd.
import RTcore.module
RTcore.module.start()
그래서 recipetrack은 루트 디렉토리 외부에 설치되고 권한이 755로 변경되어 시스템의 모든 사용자가 파일을 실행할 수 있습니다. 일단 recipetrack이 루트 폴더에있는 모듈을 시작한 다음 거기에서 main.py를 시작하면 모든 것이 정상적으로 실행되어야합니다. 그러나 그렇지 않습니다. "recipetrack"은 main.py 클래스를 가져 오는 모듈을 시작하지만 프로그램은 데이터 파일 (예 : data.sqlite3, main.glad 또는 addRecipe.glad)을로드하려고 시도합니다. 그리고 나서 멈출 수 있습니다. 그들.
프로그램의 루트로 들어가서 "recipetrack"을 실행하면 프로그램이 정상적으로 실행됩니다. 그러나 나는 시스템의 어느 위치에서나 "recipetrack"을 실행할 수 있기를 원합니다.
문제는 setup.py 파일에 package_data 행이 있다고 믿습니다. 대신 data_files를 사용하여 시도했지만 설치 중에 데이터 파일을 찾을 수 없으면 작동하지 않습니다.
이 내용이 분명하고 외부 사용자가 도움이되기를 바랍니다.
덕분에, 히버
은 ...
setup(
packages = ["RTcore"],
package_dir = {"src": "RTcore"},
package_data = {"RTcore": ["Rui/*"]},
data_files = [("Data", ["data.sqlite3"])],
)
을 setup.py 파일을 변경하지만 지금 설치 내 data.sqlite3 파일을 설치하지 않습니다.
파이썬 응용 프로그램이 실행되는 환경은 무엇입니까? os.getcwd 또는 os에 대한 호출을 기록 할 수 있습니까?environ 그리고 그것이 무엇을 반환 볼 수 있을까요? –
'entry_points'키워드를 보았습니까? –
@albert 이러한 명령어에 대해서는 약간의 도움이 필요합니다. 나는 print 서술문으로 그것들을 추가하려했지만 그 결과는 이상했다. 우분투에서 프로그램을 실행하려고합니다. 일단 내가 그걸 가지고 있다면 .deb와 .exe를 만들거야. – shload