使用pip安装时在python setup.py egg_info上中断

1 投票
1 回答
6496 浏览
提问于 2025-04-17 00:32

我正在尝试通过 Pip 和 PyPI 安装我自己的程序,使用的命令是 pip install tvrenamr,但是遇到了下面的错误:

Downloading/unpacking tvrenamr
  Running setup.py egg_info for package tvrenamr
    Usage: tvr [options] <file/folder>

    -c: error: no such option: --egg-base
    Complete output from command python setup.py egg_info:
    Usage: tvr [options] <file/folder>



-c: error: no such option: --egg-base

----------------------------------------
Command python setup.py egg_info failed with error code 2
Storing complete log in /Users/george/.pip/pip.log

我有一段时间没检查了,但之前我能用以前上传到 PyPI 的版本成功安装我的代码。不过我更新到了最新的 Pip,不确定这是否会导致问题!

当 pip 运行 python setup.py egg_info 时,似乎是调用了 TvRenamr,或者至少我的选项解析类被导入了。

我的 setup.py 文件内容是:

from os.path import dirname, join
from setuptools import setup, find_packages

from tvrenamr import get_version

def fread(fname):
    return open(join(dirname(__file__), fname)).read()

setup(
    name = 'tvrenamr',
    version = get_version(),
    description = 'Rename tv show files using online databases',
    long_description = fread('README.markdown'),
    author = 'George Hickman',
    author_email = 'george@ghickman.co.uk',
    url = 'http://github.com/ghickman/tvrenamr',
    license = 'MIT',
    packages = find_packages(exclude=['tests']),
    entry_points = {'console_scripts': ['tvr = tvrenamr.tvrenamr:run',],},
    classifiers = [
        'Environment :: Console',
        'Intended Audience :: End Users/Desktop',
        'License :: OSI Approved :: MIT License',
        'Operating System :: MacOS',
        'Operating System :: Microsoft :: Windows',
        'Operating System :: POSIX :: Linux',
        'Programming Language :: Python :: 2.6',
        'Topic :: Multimedia',
        'Topic :: Utilities',
        'Natural Language :: English'],
    install_requires = ('lxml', 'pyyaml',)
)

tvrenamr/__init__.py 文件内容是:

__version__ = (3, 0, 0)

def get_version():
    return '.'.join(map(str, __version__))

我现在唯一想到的关于它如何获取 tvrenamr 的选项的原因是,可能是 find_packages 或者 entry_points 选项以某种方式导入了 tvrenamr.py,从而导致 options.py 被导入?

所有版本的 TvRenamr 都是通过 python setup.py sdist upload 上传到 PyPI 的。

我真的对这个问题感到困惑,任何帮助都非常感谢!

编辑:我可以顺利运行 python setup.py egg_info,没有错误。

1 个回答

0

不幸的是,这个问题是因为安装工具隐藏了在 tvrenamr/__init__.py 文件中一个错误的版本字符串导致的错误,这个错误出现在 setup.py 文件里。

我是在一个干净的虚拟环境中手动安装时发现了这个错误,使用的命令是 python setup.py install,所以之前我的环境中可能有什么东西影响了安装过程。

撰写回答