我正在尝试在Windows 8.1上安装Scrapy for Python 2.7,我知道我首先需要安装pip。由于我通过ArcGIS 10.2安装了Python,我认为我需要在C:\ Python27 \ ArcGIS10.2 \ lib \ site-packages下安装pip。一旦pip安装在该目录中,我收到错误代码:
>>> import pip
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "C:\Python27\ArcGIS10.2\lib\site-packages\pip\__init__.py", line 10, in <module>
from pip.util import get_installed_distributions, get_prog
File "C:\Python27\ArcGIS10.2\lib\site-packages\pip\util.py", line 18, in <module>
from pip._vendor.distlib import version
File "C:\Python27\ArcGIS10.2\lib\site-packages\pip\_vendor\distlib\version.py", line 14, in <module>
from .compat import string_types
File "C:\Python27\ArcGIS10.2\lib\site-packages\pip\_vendor\distlib\compat.py", line 38, in <module>
from HTMLParser import HTMLParser
File "C:\Python27\ArcGIS10.2\lib\HTMLParser.py", line 47, in <module>
""", re.VERBOSE)
File "C:\Python27\ArcGIS10.2\lib\re.py", line 190, in compile
return _compile(pattern, flags)
File "C:\Python27\ArcGIS10.2\lib\re.py", line 242, in _compile
raise error, v # invalid expression
error: nothing to repeat
我还在C:\ Python27 \ lib \ site-packages中安装了pip。但是,当它仅安装在该目录中时,PyScripter无法识别它已安装。有没有人有任何建议?
答案 0 :(得分:4)
我有类似的设置(通过ArcGIS 10.2安装Python,但在运行Windows 7而不是8.1的计算机上)。我使用PIP安装另一个包(小鸟而不是scrapy)并使其正常工作。我认为你的问题可能是试图从Python解释器而不是命令行工作(哦,你们强大的Unix用户使用你们强大的命令行)。这对我有用:
如果这样可行,您应该可以立即进入Python并导入scrapy。这在我实验室的每台计算机上都适用于我...只是不在我自己的笔记本电脑上......很快就会写出我自己的问题(唉!)。
答案 1 :(得分:3)
我有同样的问题,我通过做一个非常干净的重新安装python来解决它。
我的ArcGIS版本再次从10.2.2上升到10.3再到10.2到10.2.2。当通过“添加/删除程序”删除ArcGIS(或仅Python功能)时,将删除C:\ Python27中的大多数文件。但是,这不会从系统文件夹中删除python dll。根据您的Window OS,它将是:
手动删除DLL,然后再次执行python安装。
这应该给你一个非常干净的python安装,然后再次运行你的get-pip.py,pip应该按预期工作!
P.S。如果你降级你的python,删除dll非常重要。因为python27.dll似乎在python升级时被替换,但在降级时则不然。因此,python27.dll与C:\ Python27中的脚本不兼容。
答案 2 :(得分:1)
修改文件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
。我不知道这个修改会受到什么影响。使用pip