Python打包分发安装后步骤

标签 python packaging setuptools distutils distribute

我正在打包一个使用nltk的项目。当你用 pip 安装 nltk 时,你会获得核心功能,但不是它附带的所有模块。要获取这些模块,您可以调用 nltk 的下载方法。

我尝试了以下方法,但它不起作用,提示 ImportError: No module named nltk。我假设发生这种情况是因为导入 nltk 发生在通过调用 setup(...) 安装 nltk 之前。

有没有一种干净的方法可以使用 distribute 进行安装后步骤?执行以下操作之一?

$ python -m nltk.downloader punkt
>>> import nltk; nltk.download('punkt')

这是我对 setup.py 的失败尝试:

class my_install(install):
    def run(self):
        install.run(self)
        import nltk
        nltk.download('punkt')

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

最佳答案

pip 不处理依赖项,因此您需要编写一个 README 文件并向您的用户解释他们需要安装什么,或者一个脚本来运行 pip install 来安装您需要的所有东西。

第二种方法是我认为的方法,以及解释正在发生的事情的 README 文件。

作为一名 debian 维护者,我可以告诉你,执行一个下载东西的安装命令在那里被认为是 Not Acceptable ,它必须被打包列出对其他包的依赖关系,然后如果满足依赖关系则安装你的,我认为这是一种明智的总体处理方式。 http://wiki.debian.org/UpstreamGuide#No_Downloads

关于Python打包分发安装后步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15347602/

相关文章:

python - 有没有一种惯用的方法来使用 setuptools 安装 systemd 单元?

python - setuptools:是否可以根据开发或安装安装不同的文件?

python - 在pyqt中拖动 Canvas 时将 Canvas 绑定(bind)到窗口

python - 如果路径是文件或目录 (Python)

python - Django-admin.py 突然不被识别

Python 解析 Minecraft 数据包

android - Sencha Android 原生应用

python - setuptools 测试隐藏导入错误。如何获得更好的信息?

anaconda - 当安装的包使用 conda 虚拟环境时,如何使 Python 控制台脚本入口点工作?

java - 如何在导出的 JAR 中使用引用的库