setup.py并将文件添加到/ bin /

时间:2011-01-29 23:41:21

标签: python

我无法弄清楚如何setup.py向用户的/bin/usr/bin或其他任何内容添加脚本。

例如,我想向myscript.py添加/usr/bin,以便用户可以从任何目录中调用myscript.py

4 个答案:

答案 0 :(得分:51)

考虑使用console_scripts

from setuptools import setup
setup(name='some-name',
      ...
      entry_points = {
              'console_scripts': [
                  'command-name = package.module:main_func_name',                  
              ],              
          },
)

main_func_name是主模块中的主要功能。 command-name是一个名称,用于保存在/ usr / local / bin /(通常)

答案 1 :(得分:22)

Python文档在installing scripts部分解释了它。

  

脚本是包含Python源代码的文件,旨在从命令行启动。

setup(...,
      scripts=['scripts/xmlproc_parse', 'scripts/xmlproc_val']
)

答案 2 :(得分:13)

如果你愿意构建和安装整个python包,我就会这样做:

  • 编辑setup.py中的setup()函数以包含名为 scripts 的参数,并将其参数设置为您希望从任何位置运行的文件的位置。例如

setup(name='myproject',author='',author_email='',scripts=['bin/myscript.py'])

  • 在包含setup.py的目录中,键入mkdir bin
  • 创建一个bin目录
  • 将myscript.py添加到这个新创建的bin目录中(并确保它是可执行的!)
  • cd再次进入包含setup.py的目录,并通过键入python setup.py install
  • 安装整个python包
  • 安装软件包后,您应该可以从系统的任何位置运行myscript.py!

答案 3 :(得分:13)

有两种方法可以从setuptools和PyPI基础架构获得有效的命令行工具:

  1. The "scripts" Keyword Argument
    这允许命令行执行你想要的一切,它可以是Python脚本,shell脚本或完全不同的东西。
  2. The "console_scripts" Entry Point
    这允许Python函数(不是脚本!)直接注册为命令行可访问工具。