web-dev-qa-db-fra.com

Aucun module nommé pip.req

J'installe tweepy, mais je rencontre une erreur à propos de pip.req. J'ai installé pip, mais pour une raison quelconque, pip.req est toujours introuvable. J'ai effectué de nombreuses recherches en ligne et le plus que je puisse trouver était un problème d'incompatibilités entre zapo (?) Et python 2.7, qui causait la même erreur pour un autre utilisateur. La discussion n'était pas claire sur la pour résoudre le problème, cependant. Merci!

$ 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
51
user3796109

Il semble que cela fonctionnerait si vous aviez ce code:

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("#")]

Faire ceci:

  1. créer un répertoire pip/
  2. ajouter un fichier vide pip/__init__.py
  3. ajouter un fichier pip/req.py
  4. mettre le code ci-dessus dans pip/req.py:
  5. modifier la ligne dans setup.py

    reqs = install_reqs

18
hughdbrown

Cela se produit récemment en raison d'un changement de pip 10.

La solution est assez facile. Vous avez probablement quelque chose comme:

from pip.req import parse_requirements

Changez cela en quelque chose comme:

try: # for pip >= 10
    from pip._internal.req import parse_requirements
except ImportError: # for pip <= 9.0.3
    from pip.req import parse_requirements

Ça devrait le faire.

127
mlissner

J'ai rétrogradé pour passer à 9.0.3 et tout a fonctionné pour moi. La commande pour le déclassement de pip est

python -m pip install pip==9.0.3
31
skvp

Au lieu d'importer la fonction et de rencontrer potentiellement plus de problèmes, remplacez le contenu du fichier setup.py par ce qui suit:

#!/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="[email protected]",
      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)

Notez que l'argument de session a été supprimé de l'appel parse_requirements.

5
Matthew Frost

J'ai eu un problème très similaire avec 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'

La solution consistait à mettre à niveau pip-tools de 1.10 à 2.0:

pip install -U pip-tools
4
hdiogenes

J'ai rencontré le même problème que vous avez. Pour installer pip, vous devez suivre ceci https://pypi.python.org/pypi/setuptools une fois que vous avez easy_install, j'ai d'abord installé pip, puis exécutez la commande suivante.

Sudo easy_install pip
Sudo python setup.py install

facile.

2
Bedi Egilmez