PYTHON

ModuleNotFoundError: No module n

2017-03-08  本文已影响13000人  Carltony

python经常在某些环境安装的时候会出现,这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/python3.6/lib/python3.6/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/usr/local/python3.6/lib/python3.6/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'

可能的原因是因为安装python的时候没有找到sqlite3.so的库。
简单的解决方式:

# 安装sqlite相关的全部,可能并不需要全部,为了简单直接用*号代替了
yum install sqlite*
然后重新编译python或者重新安装python

如果这种方式解决不了,建议通过编译安装sqlite3,下载地址

./configure --prefix=/usr/local/sqlite3
make && make install

然后打开python安装源码的setup.py修改如下:

sqlite_inc_paths = [ '/usr/include',
                             '/usr/local/sqlite3/include', #增加该部分内容
                             '/usr/include/sqlite',
                             '/usr/include/sqlite3',
                             '/usr/local/include',
                             '/usr/local/include/sqlite',

重新编译安装。
上面的方法我自己在centos6.5、python3.6的环境依旧没解决问题。最后我是这样解决的:

#手动安装sqlite3 完成的时候会有这么一段提示:
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

这段内容显示了sqlite3的安装路径:/usr/local/lib
特别注意add LIBDIR to the 'LD_LIBRARY_PATH' environment variablesqlite建议添加环境变量。

export LD_LIBRARY_PATH=/usr/local/lib

设置一个环境变量,然后重新编译python3安装就能够成功了。

上一篇下一篇

猜你喜欢

热点阅读