2014-04-29 15 views
6

Pracuję nad skryptem w języku Python napisanym przez kogoś innego. Próbuję uruchomić go bez żadnych problemów na moim lokalnym komputerze programistycznym.Importowanie "urllib3.util" nie działa w Pythonie 2.7?

Zainstalowałem moduły wymagane przez skrypt (żądania, urllib3 i oath2), jednak otrzymuję następujący błąd, który staram się rozwiązać;

Traceback (most recent call last): 
    File "/home/saeed/ps4/scrape/run.py", line 2, in <module> 
    import get_data as gd, time 
    File "/home/saeed/ps4/scrape/get_data.py", line 8, in <module> 
    import sys, oauth2, requests, json 
    File "/usr/local/lib/python2.7/dist-packages/requests/__init__.py", line 58, in <module> 
    from . import utils 
    File "/usr/local/lib/python2.7/dist-packages/requests/utils.py", line 25, in <module> 
    from .compat import parse_http_list as _parse_list_header 
    File "/usr/local/lib/python2.7/dist-packages/requests/compat.py", line 7, in <module> 
    from .packages import chardet 
    File "/usr/local/lib/python2.7/dist-packages/requests/packages/__init__.py", line 3, in <module> 
    from . import urllib3 
    File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/__init__.py", line 16, in <module> 
    from .connectionpool import (
    File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py", line 36, in <module> 
    from .connection import (
    File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connection.py", line 43, in <module> 
    from .util import (
ImportError: No module named util 

Skrypty składają się z trzech plików; run.py, get_data.py i incr.py. Oświadczenie import w run.py jest:

import get_data as gd, time 

W get_data.py:

import sys, oauth2, requests, json 

W incr.py:

import time 

Sądziłem, że muszę zainstalować moduł o nazwie "wykorzystaj". Szukałem tego modułu i nie mogę go znaleźć, dlatego uważam, że wydaje się, że jest to problem głębszy, a nie tylko instalacja modułu.

Byłbym bardzo wdzięczny, gdyby ktoś mógł wskazać mi właściwy kierunek, aby rozwiązać problem. Używam Pythona 2.7.3.

+0

istnieje moduł 'util.py' w pakiecie urllib3, tak. – wim

+0

Co się stanie, jeśli "importujesz urllib3.util" do interaktywnego interpretera? – wim

+0

Myślę, że przestrzeń nazw jest niepoprawna. Pokaż kod, który był używany do importowania. – fledgling

Odpowiedz

14

łamany zainstalować

Jeżeli z jakiegoś powodu instalacja urllib3 nie udaje się zawierać util submodule, można po prostu pobrać archiwum ze strony PyPI i skopiować folder util stamtąd do urllib3 lokalizacji instal .

archiwalna urllib3

Błąd już pisał mówi, że w ciągu urllib3 względna import util zawodzi.

Sprawdziłem stronę urllib3 i najprawdopodobniej masz starą wersję urllib3.

Od changelogu:

1.8.2 (2014-04-17)

Fix urllib3.util not being included in the package.

spróbuj zaktualizować moduł z

sudo pip install urllib3 --upgrade 

(lub równoważnej na komputerze)

alternatywna

Drugi powód to może zawodzi, jeśli jesteś t rying, aby uruchomić kod z poziomu modułu. Jest to ogólnie postrzegane jako niebezpieczne i powinno się go unikać.

Potwierdź który moduł jesteś ładowania

Zobacz gdzie moduł jest uruchamiając interpreter Pythona i sprawdzanie gdzie moduł urllib3 jest ładowany z;

python -c "import urllib3; print urllib3.__file__" 

Podobnie można sprawdzić wersję:

python -c "import urllib3; print urllib3.__version__" 

Ręczne sprawdzanie Można również sprawdzić, aby upewnić się, że util modułem jest obecny w odpowiednim miejscu;

ls /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util 
+0

Właśnie sprawdziłem wersję zainstalowanego przeze mnie urllib3 i jest to 1.8.2, ale wciąż dostaję błąd: S – Sid

+0

@Sid: Weird; błąd, który napisałeś jest zdecydowanie brakujący ** względny import ** w urllib3 ... może spróbuj ponownie zainstalować 'urllib3'? – jmetz

+0

Podjęto próbę uaktualnienia, ale wciąż otrzymuję ten sam błąd. Dzięki za pomoc do tej pory. – Sid

Powiązane problemy