Я пытаюсь выяснить, как сделать мою программу устанавливаемой через distutils. Моя конечная цель - сделать установщик .deb для пользователей Ubuntu. Основная проблема - заставить работать файл запуска «одним щелчком».
Моя программа использует pygtk и sqlite3 для графического интерфейса и базы данных. Я использовал glade, чтобы помочь построить мой графический интерфейс, и моя программа связывается в пару файлов glade. а затем я также храню данные в файле .sqlite3. Вот моя структура пакета до сих пор ...
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
это мой текущий файл setup.py ...
#!/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 = "mad.programs@gmail.com",
url = "none at this time",
packages = ["RTcore", "RTcore/Data","RTcore/ui"],
package_data = {"RTcore": files},
scripts = ["recipetrack"],
long_description = """Something long and descriptive""",
)
код для моего скрипта "recetrack" ...
#!/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()
Таким образом, модуль receetrack get устанавливается вне корневого каталога и его права доступа изменены на 755, так что все пользователи в системе могут запускать файл. После запуска receetrack должен запустить модуль, который находится в корневой папке, а затем запустить оттуда main.py, все должно работать как обычно. Но это не так. «receetrack» запускает модуль, который затем импортирует класс main.py, но в этот момент программа пытается загрузить файлы данных (т.е. data.sqlite3, main.glad или addRecipe.glad.)
а затем просто зависает, не в состоянии найти их.
Если я перехожу в корень программы и запускаю "receetrack", программа работает нормально. Но я хочу иметь возможность запускать "receetrack" из любого места в системе.
Я полагаю, что проблема заключается в файле setup.py со строкой package_data. Вместо этого я попытался использовать data_files, но это не работает, он зависает во время установки и не может найти файлы данных.
Надеюсь, это было ясно, и кто-то там может помочь.
Спасибо,
Хебер
изменен файл setup.py ...
setup(
packages = ["RTcore"],
package_dir = {"src": "RTcore"},
package_data = {"RTcore": ["Rui/*"]},
data_files = [("Data", ["data.sqlite3"])],
)
Но теперь программа установки не устанавливает мой файл data.sqlite3.