我在Linux Red Hat服务器上,我正在尝试启动一个python脚本。我安装了nltk,但是当我启动脚本时出现以下错误:
ImportError: No module named nltk
以下是我的其他python安装:
[~/Documents] >which python python2 python3
/bin/python
/bin/python2
但是,nltk安装在:
/usr/lib/python2.7/site-packages
我不想改变我的路径变量,因为我不是唯一一个使用此服务器的人,我还能做些什么来解决这个问题吗?我应该在哪里安装nltk?
谢谢!
编辑:
我用sudo pip install nltk
添加了NLTK[~/Documents] >which pip pip2 pip3
/bin/pip
/bin/pip2
pip3: Command not found.
我的路径:
[~/Documents] >echo $PATH
/usr/local/java/java/bin:/bin:/usr/bin:
$ PYTHONPATH不存在,我无法仅使用pip
安装它对于权限,我认为只有root可以读取/写入nltk文件:
ls -l
drwxr-x---. 23 root root 4096 Nov 23 12:24 nltk
drwxr-x---. 2 root root 4096 Nov 23 12:24 nltk-3.2.1-py2.7.egg-info
答案 0 :(得分:0)
您可以添加到python脚本的开头
import sys; sys.path.append('/usr/lib/python2.7/site-packages')
编辑1:
如果以上情况不起作用必须解决:
import sys
sys.path.insert(0, '/usr/lib/python2.7/site-packages')
编辑2:
仅在脚本运行时更改linux中的路径
from subprocess import call
call('export PYTHONPATH='/usr/lib/python2.7/':$PYTHONPATH,shell=True)
或者您可以直接调用模块
<nltk.pth>
/usr/lib/python2.7/dist-packages
目录中的任何python模块或包现在都是可导入的。
编辑3:
经过一些研究后可能还有另一种方法
首先,您需要使用
将目录附加到yout路径import sys; sys.path.append('/usr/lib/python2.7/site-packages')
你需要importlib
from importlib import import_module
然后你可以像这样导入你的模块:
mod = import_module('nltk')
要获取子模块,您可以这样做:
module_you_want = getattr(mod,'module_you_want')
就是这样!