如何使用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是可选的:)我也遇到了这个问题,直到我意外地发现我的一个模块实际工作而其他模块没有.这是差异,一旦纠正,这一切都很好!

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...