首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用distribute/setuptools创建symlink (或运行脚本)?

使用distribute/setuptools创建symlink (或运行脚本)?
EN

Stack Overflow用户
提问于 2010-01-29 08:57:31
回答 2查看 4.4K关注 0票数 10

作为项目安装过程的一部分,我需要将其中一个包符号链接到指定的目录,以便init.d脚本可以找到它。有没有办法将其作为后处理命令添加到setup()中?我甚至愿意创建另一个文件来创建链接,并将其作为某个“运行这些”(如果存在这样的选项)的kwarg列表的一部分传递给setup()

代码语言:javascript
复制
setup(
    ...
    packages = find_packages('src'),
    package_dir = {'': 'src'},
    install_requires = ...,
    data_files = [('/etc/init.d', ['scripts/foo'])],
    ...
)

foo脚本要求来自src/的一个包被符号链接到其他地方的目录(例如,不仅仅是在PYTHONPATH上)。有没有办法做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-30 01:36:43

目前,只有特定于平台的包管理工具(例如RPM、deb、win32安装程序)能够运行安装后步骤: distutils、setuptools等不直接支持此功能。(除非允许您构建RPM、windows installer等)

因此,没有特定于平台的安装程序的最简单方法是创建自己的postinstall脚本,或者将postinstall选项添加到现有脚本中,并告诉用户运行它。否则,您将不得不使用bdist_rpm或其他某个bdist命令为适当的平台构建安装程序。

票数 4
EN

Stack Overflow用户

发布于 2014-10-21 23:45:39

我知道这篇文章已经有几年的历史了,但我想提供一个更新,即在setup.py中可以进行后处理代码。长话短说,您必须覆盖setuptools的安装功能,但从那时起,您可以添加任何您想要的代码,例如复制MANIFEST.in拒绝复制的符号链接。取自彼得·拉姆特的solution

代码语言:javascript
复制
from setuptools.command.install import install

class CustomInstallCommand(install):
    """Customized setuptools install command - prints a friendly greeting."""
    def run(self):
        print "Hello, developer, how are you? :)"
        install.run(self)
        #post-processing code
setup(
    ...
    cmdclass={
        'install': CustomInstallCommand,
    },
    ...
)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2159211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档