Python 没有名为pip.req的模块

Python 没有名为pip.req的模块,python,pip,tweepy,Python,Pip,Tweepy,我正在安装tweepy,但是我遇到了一个关于pip.req的错误。我已经安装了pip,但由于某些原因仍然找不到pip.req。我在网上做了一系列的研究,我能找到的最多的是zapo(?)和Python2.7之间的不兼容问题,这给其他用户造成了同样的错误。不过,关于如何解决这个问题的讨论并不清楚。谢谢 $ python2 setup.py install Traceback (most recent call last): File "setup.py", line 5, in <modu

我正在安装tweepy,但是我遇到了一个关于pip.req的错误。我已经安装了pip,但由于某些原因仍然找不到pip.req。我在网上做了一系列的研究,我能找到的最多的是zapo(?)和Python2.7之间的不兼容问题,这给其他用户造成了同样的错误。不过,关于如何解决这个问题的讨论并不清楚。谢谢

$ python2 setup.py install
Traceback (most recent call last):
  File "setup.py", line 5, in <module>
    from pip.req import parse_requirements
ImportError: No module named pip.req
$python2 setup.py安装
回溯(最近一次呼叫最后一次):
文件“setup.py”,第5行,在
从pip.req导入解析需求
ImportError:没有名为pip.req的模块

如果您有以下代码,它看起来会起作用:

def parse_requirements(filename):
    """ load requirements from a pip requirements file """
    lineiter = (line.strip() for line in open(filename))
    return [line for line in lineiter if line and not line.startswith("#")]
这样做:

  • 创建一个目录
    pip/
  • 添加一个空文件
    pip/\uuuu init\uuuu.py
  • 添加一个文件
    pip/req.py
  • 将上述代码放入
    pip/req.py
  • 修改
    setup.py中的行

    要求=安装要求


  • 我遇到了和你一样的问题。要安装pip,您需要在获得easy_install后遵循此步骤。我首先安装了pip,然后运行以下命令

    sudo easy_install pip
    sudo python setup.py install
    

    简单。

    将setup.py的内容替换为以下内容,而不是导入函数并可能遇到更多问题:

    #!/usr/bin/env python
    #from distutils.core import setup
    import re, uuid
    from setuptools import setup, find_packages
    
    def parse_requirements(filename):
        """ load requirements from a pip requirements file """
        lineiter = (line.strip() for line in open(filename))
        return [line for line in lineiter if line and not line.startswith("#")]
    
    
    VERSIONFILE = "tweepy/__init__.py"
    ver_file = open(VERSIONFILE, "rt").read()
    VSRE = r"^__version__ = ['\"]([^'\"]*)['\"]"
    mo = re.search(VSRE, ver_file, re.M)
    
    if mo:
        version = mo.group(1)
    else:
        raise RuntimeError("Unable to find version string in %s." % (VERSIONFILE,))
    
    install_reqs = parse_requirements('requirements.txt')
    reqs = install_reqs
    
    setup(name="tweepy",
          version=version,
          description="Twitter library for python",
          license="MIT",
          author="Joshua Roesslein",
          author_email="tweepy@googlegroups.com",
          url="http://github.com/tweepy/tweepy",
          packages=find_packages(exclude=['tests']),
          install_requires=reqs,
          keywords="twitter library",
          classifiers=[
              'Development Status :: 4 - Beta',
              'Topic :: Software Development :: Libraries',
              'License :: OSI Approved :: MIT License',
              'Operating System :: OS Independent',
              'Programming Language :: Python',
              'Programming Language :: Python :: 2',
              'Programming Language :: Python :: 2.6',
              'Programming Language :: Python :: 2.7',
              'Programming Language :: Python :: 3',
              'Programming Language :: Python :: 3.3',
              'Programming Language :: Python :: 3.4',
          ],
          zip_safe=True)
    

    请注意,会话参数已从parse_requirements调用中删除。

    由于pip 10中的更改,最近发生了这种情况

    修复相当容易。你可能有这样的想法:

    from pip.req import parse_requirements
    
    try: # for pip >= 10
        from pip._internal.req import parse_requirements
    except ImportError: # for pip <= 9.0.3
        from pip.req import parse_requirements
    
    将其更改为:

    from pip.req import parse_requirements
    
    try: # for pip >= 10
        from pip._internal.req import parse_requirements
    except ImportError: # for pip <= 9.0.3
        from pip.req import parse_requirements
    
    try:#对于pip>=10
    从pip.\u internal.req导入解析\u需求
    
    除了importorror:#对于pip来说,我把pip降到了9.0.3,一切都对我有利。 降级pip的命令为

    python -m pip install pip==9.0.3
    

    我在Python3.7+PIP18.0中遇到了一个非常类似的问题:

    Traceback (most recent call last):
      File "/usr/local/bin/pip-compile", line 7, in <module>
        from piptools.scripts.compile import cli
      File "/usr/local/lib/python3.7/site-packages/piptools/scripts/compile.py", line 11, in <module>
        from pip.req import InstallRequirement, parse_requirements
    ModuleNotFoundError: No module named 'pip.req'
    

    ^谢谢!所以我能理解-为什么?为什么我必须自己添加这段代码以及上面的代码做什么?tweepy的作者编写了一个
    setup.py
    脚本,它引用了不存在的文件和目录。我告诉你作者可能的意思。(很有可能,这些文件在他的硬盘上,但没有添加到git repo中。这种情况经常发生。)此代码读取一个pip
    requirements.txt
    文件并提取需要安装的模块。然后
    setup.py
    实际安装文件。@hughdbrown我应该修改哪一行,修改什么?@AliIssa我建议将函数放在setup.py文件中,而不是导入它。请参阅下面我的解决方案。在
    setup.py
    文件中的
    reqs=install_reqs
    行的添加位置并不完全清楚,因此我也遇到了同样的问题。为什么他们不添加向后兼容性。许多软件包安装失败,并出现此错误:(似乎他们很后悔这是可用的,因为他们把它移到了
    \u internals
    的私有名称空间。但是,是的,把它拿走并不好。@kororo,我想你读的是“2016年4月”而不是2018年4月16日(本年度)。pip开发人员从来没有打算出售API,只是想成为一个工具。由于人数少得惊人,他们没有太多的时间和精力来制定一个惊人的过渡计划。让我大吃一惊的是,庞大的Python社区对这一小群pip开发人员所做的事情贡献如此之少。看起来他们想删除它。我不知道我很同意这个决定,但这里是从pip 10中删除该模块的PR。谢谢。很遗憾pip降级了,但这是唯一对我有效的事情。我今天在pip工具上也遇到了同样的问题(alôHumberto!)
    。_internal.req import parse\u requirements