我設計了一個使用wxPython的GUI應用程序,它與位於同一文件夾中的本地數據庫(Mongodb)進行通信。我的主應用程序有數據庫守護進程的相對路徑,每次GUI啓動時都會啓動它。py2app更改嵌入式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)上創建我的程序的獨立版本時,我能夠午餐GUI,但無法啓動數據庫。 看來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離開我的應用程序結構是否完整?
謝謝。
我在'main.py'的同一個文件夾中創建了一個數據庫文件夾的副本,並且它作爲一個包正常工作。謝謝羅賓。 – sa9 2010-12-26 23:15:19