2014-01-16 4 views
4

Я не мог найти ничего похожего на эту проблему.Проблемы с использованием пип, (исключение [...] FindAll() занимает ровно 2 аргумента (3 дано)

Всякий раз, когда я пытаюсь использовать пип я получаю это исключение (используя Scrapy в качестве примера):

C:\Python27\Scripts\pip-script.py run on 01/16/14 16:26:32 
Requirement already satisfied (use --upgrade to upgrade): Scrapy in c:\python27\lib\site-packages\scrapy-0.20.2-py2.7.egg 
Requirement already satisfied (use --upgrade to upgrade): Twisted>=10.0.0 in c:\python27\lib\site-packages (from Scrapy) 
Downloading/unpacking w3lib>=1.2 (from Scrapy) 
    Getting page https://pypi.python.org/simple/w3lib/ 
    URLs to search for versions for w3lib>=1.2 (from Scrapy): 
    * https://pypi.python.org/simple/w3lib/ 
    Analyzing links from page https://pypi.python.org/simple/w3lib/ 
Cleaning up... 
    Removing temporary dir c:\users\tobias\appdata\local\temp\pip_build_Tobias... 
Exception: 
Traceback (most recent call last): 
    File "c:\python27\lib\site-packages\pip\basecommand.py", line 122, in main 
    status = self.run(options, args) 
    File "c:\python27\lib\site-packages\pip\commands\install.py", line 270, in run 
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle) 
    File "c:\python27\lib\site-packages\pip\req.py", line 1157, in prepare_files 
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade) 
    File "c:\python27\lib\site-packages\pip\index.py", line 264, in find_requirement 
    page_versions.extend(self._package_versions(page.links, req.name.lower())) 
    File "c:\python27\lib\site-packages\pip\index.py", line 440, in _package_versions 
    for link in self._sort_links(links): 
    File "c:\python27\lib\site-packages\pip\index.py", line 430, in _sort_links 
    for link in links: 
    File "c:\python27\lib\site-packages\pip\index.py", line 772, in links 
    for anchor in self.parsed.findall(".//a"): 
TypeError: findall() takes exactly 2 arguments (3 given) 

Я использую Windows 7 32bit, Python 2.7

+3

Это исключение не соответствует цитируемой строке источника. Вообще. Вы в любой момент отредактировали источник 'pip'? –

+1

Что я буду делать в этот момент: удалите весь каталог 'pip' с' c: \ python27 \ lib \ site-packages \ 'и переустановите. Скорее всего, файлы кэша байтов '.pyc' устарели, больше не соответствуют источнику из' index.py' (и, возможно, других файлов). Объект 'parsed' является только деревом разбора' html5lib', где библиотека 'html5lib' * включена * с исходным деревом библиотеки' pip'. –

+1

Я переустановил его и получил тот же результат. Я не редактировал источник pip – user3203242

ответ

1

Я думаю, что у вас есть плохой вариант ElementTree как-то в pip, self.parsed должен быть html5lib дерево разбора. объект, возвращаемый html5lib.parse, действующий на HTML страницу из пакета. readme for html5lib говорит:

По умолчанию документ будет экземпляром элемента xml.etree. Когда это возможно, html5lib выбирает ускоренную реализацию ElementTree (т. Е. Xml.etree.cElementTree на Python 2.x).

This question описывает подобную проблему в другом контексте и, спрятавшись в комментариях, мы видим, что OP решить проблему путем импорта ElementTree по-разному. Я думаю, что у вас есть какая-то несовместимая версия (ы), возможно, cElementTree, которая html5lib tries to use if it can.

Я бы предложил удалить elementtree (если он существует в любом из ваших каталогов сайтов-пакетов, и у вас нет конкретной причины). Если это не работает, лучший вариант удаления/переустановки pip.

Тестирование задачи (не строго часть ответа)

Вы можете попытаться идти в командную строку и пытается import xml.etree и import elementtree. Если они оба работают, попробуйте help(xml.etree) и help(elementtree) соответственно. Проверьте даты сборки, указанные в разделе ОПИСАНИЕ. Если у вас есть очень старая (до 2008 года) elementtree сборка, и у вас нет конкретной причины - тогда удалите ее.

Смежные вопросы