从ctypes导入dlsysm ....错误说:无法导入名称dlsysm,请帮忙吗?

时间:2013-07-08 21:04:43

标签: ctypes python-3.3

在Ubuntu中下载PyGF 0.3包后,我在python中运行以下命令http://www.grammaticalframework.org/libpgf/pygf/tutorial.html

xavi@xavi-T12C:~/PyGF-0.3$ python3
Python 3.3.1 (default, Apr 17 2013, 22:32:14) 
[GCC 4.7.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pgf.pygf import *
>>> import_pgf('Food.pgf')
>>> parse('this wine is very expensive',lang='en_US')
pgf_new_parser (pgf/parser.c:908): precondition failed
    concr != NULL
Aborted (core dumped)

这假设您在工作目录中有Food.pgf语法文件。句子"这款酒非常昂贵"该语法涵盖了该语法。现在这里:http://www.grammaticalframework.org/doc/gf-quickstart.html,.pgf文件可以通过将Food.gf,FoodEng.gf,FoodIta.gf放在一个工作目录中来准备,并使用命令:

gf -make FoodIta.gf FoodEng.gf

这假设您安装了GF的二进制版本(安装非常短)。 这将编写要在Python中使用的Food.pgf文件,如上面的代码所示。

错误来自何方?正如在教程中清楚地说的那样,它将工作并解析句子。尽管教程使用Phrasebook.pgf语法,但假设它适用于各种.pgf语法。我也试过Phrasebook(很大,同样的错误)。食物很小,但尝试很好。

1 个答案:

答案 0 :(得分:1)

它是_ctypes.dlsym,它接受​​句柄和符号名称,如果找不到符号,则返回地址或引发OSError

根据修改后的问题编辑

首先确保您使用的是Python 3.3。一些Linux发行版默认为3.2。例如,Debian stable使用3.2,但Debian测试有python3.3

下载libpgf的源代码。我使用的是0.3版。解压缩源并切换到目录。然后运行./configuremakeldconfig

libpgf-0.3$ ./configure
libpgf-0.3$ make
libpgf-0.3$ sudo make install
libpgf-0.3$ sudo ldconfig -v

这假设您的系统已配置为从源构建,并使用sudo以root身份运行命令。后者允许将libpgf和libgu安装到系统目录,例如/ usr / local / lib。运行ldconfig会更新运行时链接程序ld.so的库高速缓存。有关详细说明,请参阅man ldconfig

接下来解压缩PyGF源代码,切换到其目录,然后运行以下命令:

PyGF-0.3$ python3.3 setup.py build
PyGF-0.3$ sudo python3.3 setup.py install