在setup.py脚本中安装nltk数据

时间:2014-11-07 11:07:04

标签: python nltk wordnet setup.py

我在项目中使用带有wordnet的NLTK。我在我的电脑上手动安装了pip: 在终端中pip3 install nltk --user,然后在python shell中nltk.download()下载wordnet。

我想用setup.py文件来创建这些文件,但我不知道安装wordnet的好方法。

目前,我在调用setup(" nltk"在install_requires setup号召唤列表中)之后有了这段代码:

import sys
if 'install' in sys.argv:
    import nltk
    nltk.download("wordnet")

有更好的方法吗?

2 个答案:

答案 0 :(得分:7)

我设法通过使用我自己的cmdclass类覆盖Install来在setup.py中安装NLTK数据:

from setuptools import setup, find_packages
from setuptools.command.install import install as _install


class Install(_install):
    def run(self):
        _install.do_egg_install(self)
        import nltk
        nltk.download("popular")

setup(...
    cmdclass={'install': Install},
    ...
    install_requires=[
      'nltk',
      ],
    setup_requires=['nltk']
    ...
   )

do_egg_install()方法中使用方法run()以确保在调用import nltk之前安装nltk非常重要(另请参阅此处python setuptools install_requires is ignored when overriding cmdclass)。另外,请不要忘记将nltk添加到setup_requires

答案 1 :(得分:2)

您还可以使用shell脚本自动安装,例如,运行(在pip安装nltk之后):

python -m nltk.downloader -d /usr/share/nltk_data wordnet