在Python 3.3.5中,我正在使用一些作为独立函数运行的代码构建一个类,但是在运行类版本时它会在没有错误消息的情况下中止。它依赖于第三方软件包pcFastDB,以pyd。分发。
unit1.py
import sys
import pcFastDB as p3
def get_context():
return p3.pcContext.create()
def get_DB(ctx, dbName):
return p3.pcDB.open(ctx, dbName)
.. more..
可以用作:
ctx = get_context()
db = get_DB(ctx, 'tester')
..do things with db
但
Unit2.py
import pcFastDB as p3
class DBOperation(object):
def __init__(self, DB_name):
'''
Get the context, open the database and fill a channel list
'''
self.ctx = p3.pcContext.create()
print('Context ' + str(self.ctx ))
print(' - opening ' + DB_name)
self.db = p3.pcDB.open(self.ctx, DB_name) #aborts here
print('DB opened successfully...' +str(self.db))
当我尝试打开数据库时,以静默方式中止。
db = DBOperation('tester')
测试人员数据库存在并位于我正在运行它的项目文件夹中。
没有异常,没有错误,只是停止执行。 PyDev不太喜欢pyd文件。我没有得到任何代码洞察所以调试有点神秘,但在IPython3中我可以看到所有的函数和类成员,所以我知道它没问题。不幸的是,在IPython3中调试对我来说是一个难以理解的谜。
无论如何,我知道我正在调用正确的函数并且我知道函数可以工作,因为它在Unit1中工作正常,它只是不能作为类成员工作。这甚至可能吗?
我已经从 init 中删除了数据库行并单独调用它们,并且我已经将ctx从类中删除并将其传递给函数,但这也无效。从PyDev,IPython3或命令行运行时,它的行为相同。
有什么想法吗?
答案 0 :(得分:0)
谢谢大家,我通过基本上将相同的代码重写为新模块来实现它。文件本身似乎有些奇怪。我责备PyDev。
马克