【发布时间】:2019-04-08 17:12:40
【问题描述】:
我编写了一个通过 Jython 2.7 执行的 Python 脚本。我需要 SQLite,所以我决定为 /usr/local/lib/jython/Lib 下的 Jython (link) 使用 sqlite3。
ghidra_batch.py
import sys
sys.path.append("/usr/local/lib/jython/Lib")
sys.path.append("/path/to/my/project/directory")
import sqlite3
我创建了另一个文件,在其中为我的数据库定义了一些函数:
db.py
import platform
import sys
if platform.python_implementation == 'Jython':
sys.path.append("/usr/local/lib/jython/Lib")
sys.path.append("/path/to/my/project/directory")
import sqlite3
def open_db():
[some code]
def create_schema():
[some code]
注意:我检查 Python 实现是因为这个脚本也是通过 CPython 运行的。我仅在通过 Jython 运行时附加路径以使其找到其 sqlite3 模块,以防使用 CPython 标准 sqlite3 模块。
现在当我在 ghidra_batch.py 中导入 open_db() 时出现问题:
from db import open_db
结果如下:
ImportError: cannot import name open_db
感谢您的帮助。
【问题讨论】:
-
如果在 ghidra_batch.py 之前
from db import open_db中添加import db、print(db)、print(dir(db))行会怎样?跨度> -
只尝试
import db看看会发生什么 -
@CristiFati,这里是结果:
<java package db 0x2> ['__name__', 'buffers', 'util']@MobrineHayde,NameError: global name 'open_db' is not defined -
所以,如您所见,它不是您认为的 db (db.py)。我不知道该模块是什么,但您可以通过将文件 (db.py) 重命名为 sqlite_db_wrapper.py 并修改您的 import 语句。
-
你是我的救星,救了我一天,非常感谢!
标签: python sqlite jython importerror