有没有办法使用setuptools将文件安装到任意位置?我以前曾使用Data Files和setuptools,但这些通常安装在包目录中。我需要安装一个插件文件,该文件将位于另一个应用程序的安装目录中。
答案 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,不是一个完整的包管理器本身,不处理卸载。因此,没有办法使用卸载钩子来反转您在安装后脚本中所做的操作。