5

使用 Natural Language Toolkit 学习 Python 非常有趣,它们在我的本地机器上运行良好,尽管我必须安装几个包才能使用它。NLTK 资源现在是如何集成到我的系统上的,对我来说仍然是一个谜,尽管很明显 NLTK 源代码不仅仅是位于 Python 解释器知道找到它的地方。

我想在我的网站上使用工具包,该网站由另一家公司托管。简单地将 NLTK 源代码文件上传到我的服务器并告诉根目录中的脚本“导入 nltk”是行不通的;我有点怀疑它会。

那么,无论 NLTK 安装例程做什么和直接导入之间的区别是什么,为什么直接导入无法访问工具包?有没有一种方法可以使用 NLTK 源文件而无需更改主机的 Python?

非常感谢您的想法和笔记。-G

4

3 回答 3

2

您不仅需要 NLTK PYTHONPATH(正如@dhg 指出的那样),还需要它所具有的任何依赖项;一个快速的本地测试表明这真的只是PyYAML. 您应该只用于pip安装软件包。与尝试手动找出所有依赖项并进行PYTHONPATH相应调整相比,它更不容易出错。如果这是一个共享主机,您没有适当的访问权限来运行pip安装,您应该要求主机为您执行此操作。

为了解决您问题中更一般的“无论安装脚本在做什么”部分:大多数 Python 包都是使用 管理的setup.py,它构建在distutils(有时setuputils)之上。如果这是您真正感兴趣的东西,请查看The Hitchhiker's Guide to Packaging

于 2012-08-28T20:25:17.317 回答
2

您不需要系统安装支持,只需要 python 可以找到它们的正确模块。我已经设置了没有系统安装权限的 NLTK,而且麻烦相对较少——但我确实有命令行访问权限,所以我可以看到我在做什么。

为了让它工作,你应该在你控制的计算机上进行本地安装——最好是从未安装过 NLTK 的计算机,因为你可能忘记(或不知道)为你配置了什么。确定所需内容后,将捆绑包复制到托管计算机。但此时,请检查您使用的模块版本是否适合网络服务器的架构。特别是 Numpy 具有不同的 32/64 位版本 IIRC。

弄清楚如何查看来自主机的错误消息也是值得的。如果您在默认情况下看不到它们,您可以捕获ImportError并显示它包含的消息,或者您可以重定向 stderr ......这取决于您的配置。

于 2012-09-04T23:08:57.163 回答
1

假设您的 NLTK 源位于 中/some/dir/,因此

dhg /some/dir/$ ls nltk
...
app
book.py
ccg
chat
chunk
classify
...    

您可以从nltk找到源目录的目录中启动 python 解释器:

dhg /some/dir/$ python
Python 2.7.1 (r271:86882M, Nov 30 2010, 10:35:34) 
>>> import nltk

或者您可以将其位置添加到PYTHONPATH环境变量中,这使得 NLTK 在任何地方都可用:

dhg /whatever/$ export PYTHONPATH="$PYTHONPATH:/some/dir/"
dhg /whatever/$ python
Python 2.7.1 (r271:86882M, Nov 30 2010, 10:35:34) 
>>> import nltk

任何其他依赖项,包括 NLTK 所依赖的那些,也可以以PYTHONPATH相同的方式添加到 中。

于 2012-08-28T20:14:42.407 回答