使用 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 &lt;package&gt; 命令也需要此修改。我最终更换了“?”安装软件包后,因为我不确定更改对 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 包

[ubuntu]安装并使用python 3.6及与2.7的切换

使用 Python 2.7 安装 numpy Lion?

python 2.7 2.6 共存下安装pip

安装Anaconda3 后,怎样使用 Python 2.7

无法使用 python 3.5 安装 opencv 3.1,仅适用于 2.7