我正在尝试构建一个pulp distributor plugin,它将执行包含任意代码的bash脚本,以便在发布RPM repo后触发操作。
这些插件通常使用distutils创建。但是,当我尝试安装我的模块时,收到错误:
warning: install_lib: 'build/lib' does not exist -- no Python modules to install
通常,这意味着working directory is incorrect或__init.py__ is missing。但是,在我的情况下,我正在尝试从正确的工作目录安装,并且我确实创建了__init.py__文件(请参阅repo here)。
我怀疑我遇到了一个路径问题,因为我的代码位于远离setup.py的子目录中。我究竟做错了什么?为什么我的模块不会安装?
答案 0 :(得分:1)
当您遇到这样的错误时,首先要检查的是在构建它时实际将哪些包添加到您的发行版中。在您的情况下,包列表为空,但至少应包含pulp_hook
包:
$ python -c "from setuptools import find_packages; print(find_packages())"
[]
那么为什么setuptools
无法将pulp_hook
视为常规套餐?查看其结构:您添加了名为__init.py__
的文件,但its name should be __init__.py
。重命名文件后,pulp_hook
及其子目录将成为常规包:
$ python -c "from setuptools import find_packages; print(find_packages())"
['pulp_hook', 'pulp_hook.plugins', 'pulp_hook.plugins.distributors']
现在build/lib
将被创建,因为现在distutils
找到至少一个要安装的包:
$ 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