#25 urlgrabber fails to install using pip
Closed: Fixed None Opened 10 years ago by kparal.

The urlgrabber package has a dependency on pycurl, and it seems it cannot be installed in one go using pip install -r:

$ pip install -r requirements.txt
Downloading/unpacking PyYAML==3.10 (from -r requirements.txt (line 1))
  Downloading PyYAML-3.10.tar.gz (241kB): 241kB downloaded
  Running setup.py egg_info for package PyYAML

Downloading/unpacking dingus==0.3.4 (from -r requirements.txt (line 2))
  Downloading dingus-0.3.4.tar.gz
  Running setup.py egg_info for package dingus

Downloading/unpacking py==1.4.18 (from -r requirements.txt (line 3))
  Downloading py-1.4.18.tar.gz (190kB): 190kB downloaded
  Running setup.py egg_info for package py

Downloading/unpacking pyaml==13.07.1 (from -r requirements.txt (line 4))
  Downloading pyaml-13.07.1.tar.gz
  Running setup.py egg_info for package pyaml

Downloading/unpacking pycurl==7.19.0.2 (from -r requirements.txt (line 5))
  Downloading pycurl-7.19.0.2.tar.gz (89kB): 89kB downloaded
  Running setup.py egg_info for package pycurl
    Using curl-config (libcurl 7.32.0)

Downloading/unpacking pytest==2.4.2 (from -r requirements.txt (line 6))
  Downloading pytest-2.4.2.tar.gz (553kB): 553kB downloaded
  Running setup.py egg_info for package pytest

Downloading/unpacking urlgrabber==3.9.1 (from -r requirements2.txt (line 1))
  Downloading urlgrabber-3.9.1.tar.gz (72kB): 72kB downloaded
  Running setup.py egg_info for package urlgrabber
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "/home/kparal/devel/taskotron/env_taskotron/build/urlgrabber/setup.py", line 3, in <module>
        import urlgrabber as _urlgrabber
      File "urlgrabber/__init__.py", line 54, in <module>
        from grabber import urlgrab, urlopen, urlread
      File "urlgrabber/grabber.py", line 427, in <module>
        import pycurl
    ImportError: No module named pycurl
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "/home/kparal/devel/taskotron/env_taskotron/build/urlgrabber/setup.py", line 3, in <module>

    import urlgrabber as _urlgrabber

  File "urlgrabber/__init__.py", line 54, in <module>

    from grabber import urlgrab, urlopen, urlread

  File "urlgrabber/grabber.py", line 427, in <module>

    import pycurl

ImportError: No module named pycurl

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /home/kparal/devel/taskotron/env_taskotron/build/urlgrabber
Storing complete log in /home/kparal/.pip/pip.log

The solution is:
1. Provide two requirements.txt files and install them consecutively. Or we can at least mention it in the README.
2. Ask urlgrabber developers to add dependency on pycurl to the package. pip should then handle it correctly, hopefully (I'm not really sure).

Let's do both, for the moment.


This ticket had assigned some Differential requests:
D2

This isn't a problem with urlgrabber - it's a problem with pip, PYPI and pycurl.

urlgrabber requires pycurl, pycurl doesn't like to be built in the virtualenv and when it fails to build ssl support, urlgrabber installation fails.

I see this as an extension of #74 and I suspect that the best way to fix this going forward is to migrate to requests and stop using urlgrabber.

The underlying difficulty in these tasks are why I think they're high priority. However, fixing the documentation for a snag-less installation would mitigate the high priority issues here and once that's taken care of, they can either be closed or lowered in priority

Fixed in D2. Let's use system urlgrabber package. We can revert back to pypi version once the package dependencies are fixed.

Login to comment on this ticket.

Metadata