为什么我的python模块不会安装?

时间:2018-01-26 02:29:48

标签: python setup.py pathing site-packages

我正在尝试构建一个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的子目录中。我究竟做错了什么?为什么我的模块不会安装?

1 个答案:

答案 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