使用setuptools将文件安装到任意位置

时间:2014-10-28 02:06:57

标签: python setuptools distutils

有没有办法使用setuptools将文件安装到任意位置?我以前曾使用Data Files和setuptools,但这些通常安装在包目录中。我需要安装一个插件文件,该文件将位于另一个应用程序的安装目录中。

3 个答案:

答案 0 :(得分:1)

data_files属性可让您指定完整路径 您也可以在setup.py中执行一些shutil.copy魔术,除非不这样做。

答案 1 :(得分: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

答案 2 :(得分:1)

看看这个答案:

Execute a Python script post install using distutils / setuptools

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

不幸的是,我觉得Brendan的痛苦 - setuptools,不是一个完整的包管理器本身,不处理卸载。因此,没有办法使用卸载钩子来反转您在安装后脚本中所做的操作。

相关问题