3

我正在尝试构建一个纸浆分发器插件,它将执行一个包含任意代码的 bash 脚本,以便我可以在发布 RPM 存储库后触发操作。

这些插件通常使用distutils创建。但是,当我尝试安装我的模块时,我收到错误:

warning: install_lib: 'build/lib' does not exist -- no Python modules to install

通常,这意味着工作目录不正确缺少 __init.py__。然而,就我而言,我正在尝试从正确的工作目录安装,并且确实创建了 __init.py__ 文件(请参阅此处的 repo )。

我怀疑我遇到了一个路径问题,这与我的代码位于迄今为止从 setup.py 中删除的子目录中有关。我究竟做错了什么?为什么我的模块无法安装?

4

1 回答 1

1

当你遇到这样的错误时,首先要检查的事情之一是在你构建它时哪些包实际上被添加到你的发行版中。在您的情况下,包列表为空,但应至少包含pulp_hook包:

$ python -c "from setuptools import find_packages; print(find_packages())"
[]

那么为什么不setuptools识别pulp_hook为常规包呢?查看它的结构:您添加了名为 的文件__init.py__,但它的名称应该是__init__.py. 重命名文件后,pulp_hook及其子目录将成为常规包:

$ python -c "from setuptools import find_packages; print(find_packages())"
['pulp_hook', 'pulp_hook.plugins', 'pulp_hook.plugins.distributors']

Nowbuild/lib将被创建,因为 nowdistutils找到至少一个要安装的包:

$ python setup.py install_lib
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/pulp_hook
copying pulp_hook/__init__.py -> build/lib/pulp_hook
creating build/lib/pulp_hook/plugins
copying pulp_hook/plugins/__init__.py -> build/lib/pulp_hook/plugins
creating build/lib/pulp_hook/plugins/distributors
copying pulp_hook/plugins/distributors/distributionhook.py -> build/lib/pulp_hook/plugins/distributors
copying pulp_hook/plugins/distributors/__init__.py -> build/lib/pulp_hook/plugins/distributors
于 2018-01-28T22:37:04.967 回答