为什么我在安装时不断收到此消息,说 EntryPoint 必须位于 'name=module:attrs [extras]

问题描述 投票:0回答:1

我使用的是 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: UserWarning: Unknown distribution option: 'entry_points'
warnings.warn(msg)

但是当我尝试按照以下方式使用 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='[email protected]',
    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 uninstall 或 remove 这样的命令。

python pip setuptools distutils
1个回答
42
投票

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

'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
脚本。您还必须重命名模块文件本身。

© www.soinside.com 2019 - 2024. All rights reserved.