【问题标题】:Installing pip using ArcGIS-installed Python 2.7使用 ArcGIS 安装的 Python 2.7 安装 pip
【发布时间】: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 无法识别它已安装。有人有什么建议吗?

【问题讨论】:

    标签: python scrapy pip arcgis


    【解决方案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 用户使用您的强大命令行)。这对我有用:

    1. 转到http://pip.readthedocs.org/en/latest/installing.html
    2. 下载 get-pip.py 文件并将其放在您的 python 文件夹中,例如:C:\python27\arcgis10.2\
    3. 启动命令提示符(开始菜单>>附件>>命令提示符)
    4. 通过输入将目录更改为 python 文件夹:cd c:\python27\arcgis10.2
    5. 输入:python get-pip.py 安装 PIP
    6. 通过输入以下命令将目录更改为脚本文件夹:cd scripts
    7. 通过输入: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。我现在能做什么?
    猜你喜欢
    • 2019-06-13
    • 2021-06-04
    • 1970-01-01
    • 2021-04-09
    • 2017-11-06
    • 2011-10-19
    • 2018-03-15
    • 2019-02-27
    • 1970-01-01
    相关资源
    最近更新 更多