Установка pip с помощью ArcGIS-установленный Python 2.7
Я пытаюсь установить Scrapy для Python 2.7 на Windows 8.1, и я понимаю, что мне сначала нужно установить pip. Поскольку у меня установлен Python через ArcGIS 10.2, я думаю, что мне нужно установить pip под C:Python27ArcGIS10.2libsite-packages - ... Как только pip установлен в этом каталоге, я получаю код ошибки:
>>> import pip
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "C:Python27ArcGIS10.2libsite-packagespip__init__.py", line 10, in <module>
from pip.util import get_installed_distributions, get_prog
File "C:Python27ArcGIS10.2libsite-packagespiputil.py", line 18, in <module>
from pip._vendor.distlib import version
File "C:Python27ArcGIS10.2libsite-packagespip_vendordistlibversion.py", line 14, in <module>
from .compat import string_types
File "C:Python27ArcGIS10.2libsite-packagespip_vendordistlibcompat.py", line 38, in <module>
from HTMLParser import HTMLParser
File "C:Python27ArcGIS10.2libHTMLParser.py", line 47, in <module>
""", re.VERBOSE)
File "C:Python27ArcGIS10.2libre.py", line 190, in compile
return _compile(pattern, flags)
File "C:Python27ArcGIS10.2libre.py", line 242, in _compile
raise error, v # invalid expression
error: nothing to repeat
Я также установил pip в C:Python27libsite-packages - ... Однако, когда он установлен только в этом каталоге, PyScripter не распознает что он установлен. У кого-нибудь есть предложения?
3 ответов
У меня была та же проблема, и я решил ее, выполнив действительно чистую переустановку python.
моя версия ArcGIS снова пошла вверх и вниз с 10.2.2 до 10.3 до 10.2 до 10.2.2. Когда ArcGIS (или только объекты Python) удаляется с помощью программ добавления/ удаления, большинство файлов из C:\Python27 будут удалены. Однако это не приведет к удалению библиотеки dll python из вашей системной папки. В зависимости от вашей ОС Window, это будет либо:
- C:\Windows\System32\python27.dll файлы
- C:\Windows\SysWOW64\python27.dll файлы
удалите DLL вручную,а затем снова установите python.
Это должно дать вам действительно чистую установку python, а затем запустить get-pip.py опять же, и pip должен работать, как ожидалось!
P. S. Как удалять DLL действительно важно, если вы понижаете свой питон. Как python27.dll, похоже, заменяется, если python обновляется, но не тогда, когда понижается. Следовательно, существует несовместимость между python27.dll со скриптами в C:\Python27 - ...
У меня есть аналогичная настройка (Python установлен через ArcGIS 10.2, но на машинах под управлением Windows 7, а не 8.1). Я использовал PIP для установки другого пакета (birdy вместо scrapy) и получил его работу. Я думаю, что ваша проблема может пытаться работать изнутри интерпретатора Python, а не из командной строки (О, вы, могучие пользователи Unix с вашей мощной командной строкой). Вот что сработало для меня:
- перейти к http://pip.readthedocs.org/en/latest/installing.html
- скачать get-pip.py файл и поместите его в папку python, например: C:\python27\arcgis10.2\
- Запустите командную строку (меню Пуск >> стандартные >> Командная строка)
- измените каталоги на папку python, введя: cd c:\python27\arcgis10.2
- установите PIP, введя: python get-pip.py
- измените каталоги в папку скриптов, введя: cd скрипты
- используйте pip для установки пакета (например, scrapy), введя: pip install scrapy
Если это работает, вы должны иметь возможность перейти в Python сейчас и импортировать scrapy. Это работало на каждом компьютере в моей лаборатории... только не на моем ноутбуке... скоро я напишу свой собственный вопрос для этого (arghh!).
изменить файл HTMLParser.py
следующим образом (C:\Python27\ArcGIS10.2\lib\HTMLParser.py
для меня):
перед :
locatestarttagend = re.compile(r"""
<[a-zA-Z][-.a-zA-Z0-9:_]* # tag name
(?:[\s/]* # optional whitespace before attribute name
(?:(?<=['"\s/])[^\s/>][^\s/=>]* # attribute name
(?:\s*=+\s* # value indicator
(?:'[^']*' # LITA-enclosed value
|"[^"]*" # LIT-enclosed value
|(?!['"])[^>\s]* # bare value
)
)?(?:\s|/(?!>))*
)*
)?
\s* # trailing whitespace
""", re.VERBOSE)
после :
locatestarttagend = re.compile(r"""
<[a-zA-Z][-.a-zA-Z0-9:_]* # tag name
(?:[\s/]* # optional whitespace before attribute name
(?:(?<=['"\s/])[^\s/>][^\s/=>]* # attribute name
(?:\s*=+\s* # value indicator
(?:'[^']*' # LITA-enclosed value
|"[^"]*" # LIT-enclosed value
|(?!['"])[^>\s]* # bare value
)
)?(?:\s|/(?!>))*
)*
) # >>>>>>>>>>>>>>>>>>>>>>>>>>> Remove the ? <<<<<<<<<<<<<<<<<<
\s* # trailing whitespace
""", re.VERBOSE)
затем использовать pip
. Я не знаю, на что повлияет эта модификация. Это может быть безопаснее, чтобы добавить точку interrogativ после того, как вы использовали pip