共计 5787 个字符,预计需要花费 15 分钟才能阅读完成。
CentOS7 下的 nltk 启动问题
CentOS 7,Python 3.6,ipython 6.0.0
问题描述
ipython
启动 ipython 命令
import nltk
爆出以下的错误信息:
In [1]: import nltk | |
--------------------------------------------------------------------------- | |
ModuleNotFoundError Traceback (most recent call last) | |
<ipython-input-1-b06499430ee0> in <module>() | |
----> 1 import nltk | |
/opt/python36env/lib/python3.6/site-packages/nltk/__init__.py in <module>() | |
135 from nltk.translate import * | |
136 from nltk.sem import * | |
--> 137 from nltk.stem import * | |
138 | |
139 # Packages which can be lazily imported | |
/opt/python36env/lib/python3.6/site-packages/nltk/stem/__init__.py in <module>() | |
27 from nltk.stem.isri import ISRIStemmer | |
28 from nltk.stem.porter import PorterStemmer | |
---> 29 from nltk.stem.snowball import SnowballStemmer | |
30 from nltk.stem.wordnet import WordNetLemmatizer | |
31 from nltk.stem.rslp import RSLPStemmer | |
/opt/python36env/lib/python3.6/site-packages/nltk/stem/snowball.py in <module>() | |
24 | |
25 from nltk import compat | |
---> 26 from nltk.corpus import stopwords | |
27 from nltk.stem import porter | |
28 from nltk.stem.util import suffix_replace | |
/opt/python36env/lib/python3.6/site-packages/nltk/corpus/__init__.py in <module>() | |
64 from nltk.tokenize import RegexpTokenizer | |
65 from nltk.corpus.util import LazyCorpusLoader | |
---> 66 from nltk.corpus.reader import * | |
67 | |
68 abc = LazyCorpusLoader(/opt/python36env/lib/python3.6/site-packages/nltk/corpus/reader/__init__.py in <module>() | |
103 from nltk.corpus.reader.categorized_sents import * | |
104 from nltk.corpus.reader.comparative_sents import * | |
--> 105 from nltk.corpus.reader.panlex_lite import * | |
106 | |
107 # Make sure that nltk.corpus.reader.bracket_parse gives the module, not | |
/opt/python36env/lib/python3.6/site-packages/nltk/corpus/reader/panlex_lite.py in <module>() | |
13 | |
14 import os | |
---> 15 import sqlite3 | |
16 | |
17 from nltk.corpus.reader.api import CorpusReader | |
/usr/local/lib/python3.6/sqlite3/__init__.py in <module>() | |
21 # 3. This notice may not be removed or altered from any source distribution. | |
22 | |
---> 23 from sqlite3.dbapi2 import * | |
/usr/local/lib/python3.6/sqlite3/dbapi2.py in <module>() | |
25 import collections.abc | |
26 | |
---> 27 from _sqlite3 import * | |
28 | |
29 paramstyle = "qmark" | |
ModuleNotFoundError: No module named '_sqlite3' |
从错误信息来分析,可以发现,就是 sqlite3 找不到而已。
问题分析与解决
那就尝试看看 sqlite3 是否已经安装:
yum search sqlite3
yum search sqlite3 | |
Loaded plugins: fastestmirror | |
Loading mirror speeds from cached hostfile | |
=============================================================================== N/S matched: sqlite3 ================================================================================ | |
libsqlite3x.x86_64 : A C++ Wrapper for the SQLite3 embeddable SQL database engine | |
libsqlite3x-devel.x86_64 : Development files for libsqlite3x | |
preludedb-sqlite3.x86_64 : Plugin to use prelude with a SQLite3 database | |
rubygem-sqlite3.x86_64 : Allows Ruby scripts to interface with a SQLite3 database | |
rubygem-sqlite3-doc.noarch : Documentation for rubygem-sqlite3 | |
soci-sqlite3.x86_64 : SQLite3 back-end for soci | |
soci-sqlite3-devel.x86_64 : SQLite3 back-end for soci | |
uwsgi-plugin-sqlite3.x86_64 : uWSGI - SQLite3 plugin | |
dspam-sqlite3.x86_64 : SQLite v3.x storage driver for libdspam | |
golang-googlecode-sqlite-devel.i686 : Trivial sqlite3 binding for Go | |
golang-googlecode-sqlite-devel.x86_64 : Trivial sqlite3 binding for Go | |
libsq3.x86_64 : A C++ Wrapper for the SQLite3 embeddable SQL database engine | |
libsq3-devel.x86_64 : Development files for libsqlite3x | |
opendbx-sqlite.x86_64 : SQLite 3 backend - provides sqlite3 support in opendbx | |
python-sqlite3dbm.noarch : SQLite-backed dictionary conforming to the dbm interface | |
sqlite-devel.i686 : Development tools for the sqlite3 embeddable SQL database engine | |
sqlite-devel.x86_64 : Development tools for the sqlite3 embeddable SQL database engine | |
sqlite-tcl.x86_64 : Tcl module for the sqlite3 embeddable SQL database engine | |
sqlite3-dbf.x86_64 : Converter of XBase / FoxPro tables to SQLite | |
zabbix20-proxy-sqlite3.x86_64 : Zabbix proxy compiled to use SQLite | |
zabbix22-dbfiles-sqlite3.noarch : Zabbix database schemas and patches | |
zabbix22-proxy-sqlite3.x86_64 : Zabbix proxy compiled to use SQLite |
找到了 sqlite3-devel,那就安装好了
yum install sqlite-devel
yum install sqlite-devel | |
Loaded plugins: fastestmirror | |
Loading mirror speeds from cached hostfile | |
Resolving Dependencies | |
--> Running transaction check | |
---> Package sqlite-devel.x86_64 0:3.7.17-8.el7 will be installed | |
--> Finished Dependency Resolution | |
Dependencies Resolved | |
===================================================================================================================================================================================== | |
Package Arch Version Repository Size | |
===================================================================================================================================================================================== | |
Installing: | |
sqlite-devel x86_64 3.7.17-8.el7 base 104 k | |
Transaction Summary | |
===================================================================================================================================================================================== | |
Install 1 Package | |
Total download size: 104 k | |
Installed size: 366 k | |
Is this ok [y/d/N]: y | |
Downloading packages: | |
sqlite-devel-3.7.17-8.el7.x86_64.rpm | 104 kB 00:00:00 | |
Running transaction check | |
Running transaction test | |
Transaction test succeeded | |
Running transaction | |
Installing : sqlite-devel-3.7.17-8.el7.x86_64 1/1 | |
Verifying : sqlite-devel-3.7.17-8.el7.x86_64 1/1 | |
Installed: | |
sqlite-devel.x86_64 0:3.7.17-8.el7 | |
Complete! |
问题没有解决
重新启动 ipython
import nltk
但是问题依然存在,哪里出的问题呢?
问题最终解决
虽然安装了 sqlite3 的数据库,但是对于 ipython 的环境来说,确实无法找到 sqlite3。
于是,我重新编译,并且安装了一下 python3。
注意: 这个是在 sqlite3 安装成功之后,在安装 python 的运行环境。
于是重新启动 ipython,问题消逝,一切正常,本质上就是 sqlite3 的安装,以及 sqlite3 与 python 运行环境之间的匹配的问题。
更多 SQLite 相关教程见以下内容:
如何在 Ubuntu 15.04 上安装带 JSON 支持的 SQLite 3.9.1 http://www.linuxidc.com/Linux/2016-02/128209.htm
SQLite3 简单操作 http://www.linuxidc.com/Linux/2016-01/127969.htm
SQLite3 中存储类型和数据类型结合文档解析 http://www.linuxidc.com/Linux/2015-08/121971.htm
SQLite3 安装、基本操作 http://www.linuxidc.com/Linux/2012-05/60452.htm
Ubuntu 12.04 下 SQLite 数据库简单应用 http://www.linuxidc.com/Linux/2012-06/63379.htm
Ubuntu 12.04 下安装 SQLite 及其使用方法 http://www.linuxidc.com/Linux/2013-08/89155.htm
SQLite 数据库入门基础教程 http://www.linuxidc.com/Linux/2014-06/103587.htm
SQLite 的详细介绍:请点这里
SQLite 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-07/145464.htm
