16

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

我想用一个setup.py文件自动化这些,但我不知道安装 wordnet 的好方法。

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

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

有一个更好的方法吗?

4

2 回答 2

13

我设法通过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 在覆盖 cmdclass 时被忽略)。也不要忘记添加nltksetup_requires.

于 2015-04-14T13:23:43.933 回答
3

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

python -m nltk.downloader -d /usr/share/nltk_data wordnet
于 2014-11-30T18:51:00.917 回答