python - 使用分发/设置工具创建符号链接(symbolic link)(或运行脚本)?

标签 python symlink setuptools distribute

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

setup(
    ...
    packages = find_packages('src'),
    package_dir = {'': 'src'},
    install_requires = ...,
    data_files = [('/etc/init.d', ['scripts/foo'])],
    ...
)

那个 foo 脚本期望来自 src/ 的包之一被符号链接(symbolic link)到其他地方的目录(例如,不仅仅是在 PYTHONPATH 上)。有办法实现吗?

最佳答案

我知道这篇文章已经有好几年了,但我想提供一个更新,说明后处理代码可以在 setup.py 中实现。长话短说,您必须覆盖 setuptools 的安装功能,但从那时起您可以添加任何您想要的代码,例如复制 MANIFEST.in 拒绝复制的符号链接(symbolic link)。取自 Peter Lamut 的 solution .

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,
    },
    ...
)

关于python - 使用分发/设置工具创建符号链接(symbolic link)(或运行脚本)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159211/

相关文章:

python - 在通过终端打开的程序中输入文本,但速度很快

c - 如何在C中创建硬/软链接(soft link)?

python - 使用 "setup.py develop"确定程序已安装

python - __pycache__ 是跨平台的吗?

python - 从 Django 中基于类的 View 返回上下文

python - python中的结构

linux - 创建到多个目录centos的符号链接(symbolic link)

用于符号链接(symbolic link)的 Linux 命令文件

python - 使用依赖项/资源构建 python 发行版的最佳工具

SCAR 的 Python 等效项