将 nltk 语料库下载为 setup.py 文件中的 cmdclass 不起作用

问题描述

我想将 nltk 语料库的某些部分添加到 setup.py 文件中。我通过设置自定义 cmdclass 来遵循响应 here。我的安装文件看起来像这样。


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


class DownloadNLTK(install):
    def run(self):
        self.do_egg_install()
        import nltk
        nltk.download('wordnet')
        nltk.download('punkt')
        nltk.download('stopwords')
        nltk.download('vader_lexicon')

setup(
    install_requires=requirements,python_requires='>=3.7',cmdclass={'download_nltk': DownloadNLTK()}
)

但是,运行它,我收到此错误

Traceback (most recent call last):
  File "setup.py",line 15,in <module>
    'install': DownloadNLTK()}
TypeError: __init__() missing 1 required positional argument: 'dist'

我试图更好地了解需要什么,但我不得不说,我在 dist 上找到的 here 文档对我来说不是很清楚。有人可以帮助解决方法吗?谢谢!

解决方法

传递类,而不是它的实例:

    cmdclass={'download_nltk': DownloadNLTK}

(没有 () 以避免实例化类)