Я разработал приложение с графическим интерфейсом, используя wxPython, который взаимодействует с локальной базой данных (Mongodb), расположенной в той же папке.Мое основное приложение имеет относительный путь к демону базы данных, чтобы запускать его каждый раз, когда запускается графический интерфейс.
Это main.py:
import mongodb
class EVA(wx.App):
# wxPython GUI here
pass
if __name__ == "__main__":
myMongodb = mongodb.Mongodb()
myMongodb.start()
myMongodb.connect()
app = EVA(0)
app.MainLoop()
Это модуль mongodb.py:
from pymongo import Connection
import subprocess, os , signal
class Mongodb():
pid = 0
def start(self):
path = "/mongodb-osx-x86_64-1.6.5/bin/mongod"
data = "/data/db/"
cmd = path + " --dbpath " + data
MyCMD = subprocess.Popen([cmd],shell=True)
self.pid = MyCMD.pid
def connect(self):
try:
connection = Connection(host="localhost", port=27017)
db = connection['Example_db']
return db
except Exception as inst:
print "Database connection error: " , inst
def stop(self):
os.kill(self.pid,signal.SIGTERM)
Все отлично работает с терминала.Однако, когда я использовал py2app для создания автономной версии моей программы на Mac OS (OS v10.6.5, Python v2.7), я могу запустить графический интерфейс, но не могу запустить базу данных. Кажется, py2app изменил расположение исполняемой папки Mongodb и сломал мой код.
Я использую следующие параметры с py2app:
$ py2applet --make-setup main.py
$ rm -rf build dist
$ python setup.py py2app --iconfile /icons/main_icon.icns -r /mongodb-osx-x86_64-1.6.5
Как заставить py2app выйтимоя структура приложения не повреждена?
Спасибо.