没有名为pip.req的模块

54 python pip tweepy

我正在安装tweepy,但我遇到了关于pip.req的错误.我安装了pip,但由于某种原因pip.req仍然无法找到.我在网上进行了大量研究,我发现的最多是关于zapo(?)和python 2.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
Run Code Online (Sandbox Code Playgroud)

mli*_*ner 131

由于点10变化,最近发生了这种情况.

修复非常简单.你可能有类似的东西:

from pip.req import parse_requirements
Run Code Online (Sandbox Code Playgroud)

将其更改为:

try: # for pip >= 10
    from pip._internal.req import parse_requirements
except ImportError: # for pip <= 9.0.3
    from pip.req import parse_requirements
Run Code Online (Sandbox Code Playgroud)

应该这样做.

  • 他们为什么不添加向后兼容性.许多软件包将无法安装此错误.:( (6认同)

skv*_*kvp 36

我降级到9.0.3,事情对我有用.降级点的命令是

python -m pip install pip==9.0.3
Run Code Online (Sandbox Code Playgroud)


hug*_*own 20

看起来如果你有这个代码它会工作:

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("#")]
Run Code Online (Sandbox Code Playgroud)

做这个:

  1. 创建一个目录 pip/
  2. 添加一个空文件 pip/__init__.py
  3. 添加文件 pip/req.py
  4. 将上面的代码放入pip/req.py:
  5. 修改中的行 setup.py

    reqs = install_reqs

  • ^ 谢谢!所以我可以理解 - 为什么会这样?为什么我必须自己添加这段代码以及上面的代码是做什么的? (2认同)
  • tweepy的作者写了一个`setup.py脚本,它引用了不存在的文件和目录.我告诉你作者的意思.(很可能,这些文件都在他的硬盘上,但没有添加到git repo.它发生了.)这段代码读取了一个点`requirements.txt`文件并提取了要安装的所需模块.然后`setup.py`实际安装文件. (2认同)

hdi*_*nes 6

我在Python 3.7 + pip 18.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'
Run Code Online (Sandbox Code Playgroud)

解决方案是将pip-tools从1.10升级到2.0:

pip install -U pip-tools
Run Code Online (Sandbox Code Playgroud)

  • 从pip._internal.req导入parse_requirements` (2认同)

Mat*_*ost 5

而不是导入函数并可能遇到更多问题,请使用以下内容替换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)
Run Code Online (Sandbox Code Playgroud)

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