2014-10-28 28 views

回答

1

看来,setuptools故意难以在软件包目录之外安装文件。

我改为将插件文件作为包数据包含,并使用setuptools的Entry Points功能来公开我想要分发的插件文件的安装/卸载功能。

setup(
    ... 
    entry_points={ 
     'console_scripts': [ 
      'mypackage_install_plugins = mypackage:install_plugins', 
      'mypackage_uninstall_plugins = mypackage:uninstall_plugins', 
     ],     
    } 
) 

我只是增加了一个额外的步骤安装说明安装Python包后运行以下命令:

$> mypackage_install_plugins 
1

data_files属性将允许您指定完整路径。
你也可以在你的setup.py中做一些shutil.copy魔术,除非不。

+0

谢谢,这似乎确实适用于大多数地点;尽管如此,它似乎并不允许site-packages目录内的另一个包中的路径,Qt Designer插件就是这种情况。 – 2014-10-29 18:06:14

1

退房这样的回答:

Execute a Python script post install using distutils/setuptools

这演示了如何添加在安装结束时运行的任意安装脚本(python,shell,其他)。它会运行直接使用“setup.py install”,或者像“pip install”这样的包管理器。有了这个,你可以在任何你想要的地方添加你想要的任何文件。

不幸的是,我觉得布伦丹的痛苦 - setuptools本身并不是一个完整的包管理器,不能处理卸载。因此,无法使用卸载挂接来反转您在安装后脚本中所做的操作。