Evan
Evan

Reputation: 1713

Pip mixup of python versions

I recently installed python 3.4 using this custom installation guide, the system had python 2.6 as default. Today i needed to install tldextract to python2.6 I did that using pip pip2.6 install tldextract but after i tried to import the module the import failed with this error.

Traceback (most recent call last):
  File "process.py", line 12, in <module>
    import tldextract
  File "/usr/lib/python2.6/site-packages/tldextract/__init__.py", line 1, in <module>
    from .tldextract import extract, TLDExtract
  File "/usr/lib/python2.6/site-packages/tldextract/tldextract.py", line 70, in <module>
    from urllib.request import urlopen
ImportError: No module named request

That seems to be the python3.4 version of tldextract since it is trying to find the request module in urllib. So i guess pip installed the wrong version of the module, how can i fix this? Or remove python 3.4 alltogether.

Upvotes: 0

Views: 327

Answers (1)

richardb
richardb

Reputation: 126

tldextract has the following code block in the source repo, and the line numbers match:

try: # pragma: no cover
# Python 2
  from urllib2 import urlopen
  from urlparse import scheme_chars
  unicode = unicode
except ImportError: # pragma: no cover
# Python 3
  from urllib.request import urlopen

So it looks like the Python 2 branch is throwing an exception for some unknown reason and it's failing over to Python 3. I would start by looking why that might be.

Upvotes: 1

Related Questions