为什么我在安装时一直收到这条消息说 EntryPoint must be in 'name=module:attrs [extras]

why do I keep getting this message when installing saying EntryPoint must be in 'name=module:attrs [extras]

您好,我在 OSx Mavericks,使用 python 2.7 和 pip 6.0.8 版以及 setuptools 12.2 版。

当我尝试安装我的项目时,我收到警告消息但安装成功

$ python setup.py install --user

如果我使用 distutils,我会收到以下消息,可能它的设置没有 kwarg entry_points。 /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py: 267:用户警告:未知分发选项:'entry_points' warnings.warn(消息)

但是当我尝试通过以下方式使用 pip 安装时,出现以下错误消息并且安装无法继续:

$ pip install --user --editable .

如果我使用 pip,即使我导入了 distutils 安装程序,我也会收到以下错误消息。

Obtaining file:///Users/Me/Development/pyclones/git-maildiff
    error in maildiff setup command: ("EntryPoint must be in 'name=module:attrs [extras]' format", 'git-maildiff=scripts.git-maildiff')
    Complete output from command python setup.py egg_info:
    error in maildiff setup command: ("EntryPoint must be in 'name=module:attrs [extras]' format", 'git-maildiff=scripts.git-maildiff')

    ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in /Users/Me/Development/pyclones/git-maildiff

虽然我已经调用了这样的设置

setup(
    name='maildiff',
    version=VERSION,
    author='Sanjeev Kumar',
    author_email='myemail@gmail.com',
    packages=['emaildiff', 'emaildiff/mail',],
    py_modules=['maildiff_cmd', 'version', 'send'],
    data_files = ['VERSION'],
    scripts=['scripts/git-maildiff'],
    license='LICENSE',
    description='Package to email color git diff',
    long_description=open('README.md').read(),
    entry_points={
    'console_scripts':
        ['git-maildiff=scripts.git-maildiff']
                }
)

任何人都可以帮助我为什么我得到这个,我更喜欢使用 pip,因为我可以稍后使用 pip 卸载它,但我认为它们不是 setup.py 卸载或删除之类的任何命令。

您在这两行中定义的入口点:

'console_scripts':
        ['git-maildiff=scripts.git-maildiff']

中有一个 -,我不确定它是否受支持(git-maildiff 不是有效的 Python 模块名称)。此外,它错过了要调用的函数名称:main.

您可以先尝试添加 main:

'console_scripts':
        ['git-maildiff=scripts.git-maildiff:main']

如果这不起作用,请重命名您的脚本以删除 -。我认为您仍然可以保留 git-maildiff 作为入口点名称并重命名模块:

'console_scripts':
        ['git-maildiff=scripts.git_maildiff:main']

这应该会为您提供一个调用 git_maildiff 模块的 git-maildiff 脚本。您也必须重命名模块文件本身。