【问题标题】:download nltk corpus as cmdclass in setup.py files not working在 setup.py 文件中将 nltk 语料库下载为 cmdclass 不起作用
【发布时间】:2021-08-21 13:21:14
【问题描述】:

我想将 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 的文档对我来说不是很清楚。有人可以帮助解决方法吗?谢谢!

【问题讨论】:

  • 你的缩进明显错了;请edit 修复它。在本网站的桌面版本中,您可以通过粘贴代码、选择粘贴的块并输入 ctrl-K 来为您标记代码。
  • 您似乎指的是distutils 的文档,它与seetuptools 是分开的。查看您正在复制的示例,cmdclass dict 值可能应该是一个类,而不是返回该类实例的函数调用(所以取出最终的());但我没有尝试过你的代码,也不太明白它应该做什么。

标签: python nltk setuptools setup.py


【解决方案1】:

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

    cmdclass={'download_nltk': DownloadNLTK}

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

【讨论】:

  • 谢谢!这么小的事情我监督!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
相关资源
最近更新 更多