【问题标题】:Python setuptools installing script to pathPython setuptools将脚本安装到路径
【发布时间】:2018-05-06 22:15:27
【问题描述】:

我的 Python 模块包含一个用户可以从命令行执行的外部脚本。我希望用户能够一次性安装 Python 模块和脚本。使用 setuptools,我尝试添加:

scripts=['bin/mybin']

这几乎可以解决问题。它没有将mybin 添加到用户的PATH 中,而是添加了一个调用mybin 的小脚本:

#!/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
# EASY-INSTALL-SCRIPT: 'myscript==2.0.4','mybin'
__requires__ = 'myscript==2.0.4'
__import__('pkg_resources').run_script('myscript==2.0.4', 'mybin')

这种间接导致了一些问题,尤其是在执行脚本时会出现小延迟(与将mybin 直接复制到 PATH 相比)。

有没有办法让 setuptools 将脚本直接复制到 PATH 而不是让它间接调用我的脚本?

我的第一个想法是编写一个自定义的post-install 函数来将脚本复制到用户的路径中。但是,如果有办法在 setuptools 中本地执行此操作,我会更喜欢。

【问题讨论】:

    标签: python setuptools


    【解决方案1】:

    一种解决方案是将其添加到您的setup.py

      data_files=[
        ('/usr/local/bin', ['bin/mybin'])
        ]
    

    bin/mybin 复制到/usr/local/bin

    另一个不需要对 bin 目录进行硬编码的解决方案是首先检测 setuptools 将脚本复制到的脚本目录,然后使用 data_files 直接将其复制到那里。 This StackOverflow答案解释了如何检测 setuptools 脚本路径。

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 1970-01-01
      • 2013-07-22
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多