微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用setuptools安装python cli脚本而不重复?

由于argparse,我有两个可以在shell中使用的Python脚本.

setup.py的相关部分:

setup(
    # (...)
    zip_safe=True,scripts=['bin/bgce.py','bin/sizes.py'],packages=find_packages(),data_files=data_files,entry_points = {
        'console_scripts': [
            'bgce = bgce:main','sizes = sizes:main',]
    }
)

我最终在/usr/local/bin中使用了bgce,bgce.py,sizes,sizes.py.全部4个工作.

如果我遗漏了包或脚本行,则没有重复项,但文件会像这样失败:

Traceback (most recent call last):
File "/usr/local/bin/bgce",line 9,in dist-packages/pkg_resources.py",line 305,in load_entry_point return get_distribution(dist).load_entry_point(group,name)
File "/usr/lib/python2.6/dist-packages/pkg_resources.py",line 2244,in load_entry_point return ep.load()
File "/usr/lib/python2.6/dist-packages/pkg_resources.py",line 1954,in load
    entry = __import__(self.module_name,globals(),['__name__'])
ImportError: No module named bgce

我该怎么办才能安装bgce和大小,没有重复的烦人(for tab-completion).py附加?

最佳答案
确保实际模块具有如下主要功能

def main():
    try:
        some_stuff()
    except KeyboardInterrupt :
        print ""
        sys.exit()

if __name__ == "__main__" :
    main()

我们经常在if __name__ ==“__ main__”下面写出主代码的模式:
如果没有实际的main(),则distutils无法获得加载点. (捕捉^ C是可选的:)我也遇到了这个问题,直到我意外地发现我的一个模块实际工作而其他模块没有.这是差异,一旦纠正,这一切都很好!

原文地址:https://www.jb51.cc/python/439080.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐