使用 ArcGIS 安装的 Python 2.7 安装 pip
Posted
技术标签:
【中文标题】使用 ArcGIS 安装的 Python 2.7 安装 pip【英文标题】:Installing pip using ArcGIS-installed Python 2.7 【发布时间】:2014-12-22 07:03:02 【问题描述】:我正在尝试在 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 无法识别它已安装。有人有什么建议吗?
【问题讨论】:
【参考方案1】:我遇到了同样的问题,我通过真正干净地重新安装 python 解决了它。
我的 ArcGIS 版本从 10.2.2 到 10.3 又从 10.2 到 10.2.2 上下波动。当通过添加/删除程序删除 ArcGIS(或仅 Python 功能)时,C:\Python27 中的大部分文件将被删除。但是,这不会从您的系统文件夹中删除 python dll。根据您的 Window 操作系统,它将是:
C:\Windows\System32\python27.dll C:\Windows\SysWOW64\python27.dll手动删除 DLL,然后重新安装 python。
这应该会给你一个真正干净的 python 安装,然后再次运行你的 get-pip.py,pip 应该会按预期工作!
附:如果你要降级你的 python,那么删除 dll 是非常重要的。由于 python27.dll 似乎在升级 python 时被替换,但在降级时不会被替换。因此,python27.dll 与 C:\Python27 中的脚本不兼容。
【讨论】:
这对我来说已经死了 - 节省了我用头撞墙的时间。在一台从 10.2.2->10.3 又回到 10.2.2 的机器上。清除 SysWOW64 中的 DLL 并修复 ArcGIS 安装修复了所有问题。谢谢!【参考方案2】:我有类似的设置(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
输入:python get-pip.py 安装 PIP
通过输入以下命令将目录更改为脚本文件夹:cd scripts
通过输入:pip install scrapy 使用 pip 安装您的软件包(例如 scrapy)
如果可行,您现在应该可以进入 Python 并导入 scrapy。这在我实验室的每台计算机上都对我有用……只是在我自己的笔记本电脑上不行……我很快就会为此写下我自己的问题(啊!)。
【讨论】:
感谢您的回答。我将与 yageek 的建议一起尝试一下,看看有什么效果。非常感谢您的帮助。【参考方案3】:修改文件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
后添加疑问点可能更安全
【讨论】:
这对我有用,谢谢@yageek。似乎pip install <package>
命令也需要此修改。我最终更换了“?”安装软件包后,因为我不确定更改对 HTMLParser 脚本的影响。
yageek,在我按照您的建议进行操作后,运行“get pip”安装它,我得到了这个结果您使用的是 pip 版本 6.0.8,但是版本 9.0.1 可用。您应该考虑通过“pip install --upgrade pip”命令进行升级。要求已经是最新的:c:\python27\arcgis10.3\lib\site-packages 中的 pip。我现在能做什么?以上是关于使用 ArcGIS 安装的 Python 2.7 安装 pip的主要内容,如果未能解决你的问题,请参考以下文章
Python 3.4 和 2.7:无法为 python 3.4 安装 numpy 包