【问题标题】:Using pip install to install Cartopy but missing Proj version at least 4.9.0使用 pip install 安装 Cartopy 但缺少 Proj 版本至少 4.9.0
【发布时间】:2019-05-10 21:20:59
【问题描述】:

似乎我无法让 pip 在我的计算机上安装 Cartopy。我直接从 Windows 命令行工作(没有 Anaconda 或其他代理程序)。

当我尝试“pip install cartopy”时,我得到了预期:

C:\Users\Justin\Documents\Python Programs>pip install cartopy
Collecting cartopy
  Using cached https://files.pythonhosted.org/packages/e5/92/fe8838fa8158931906dfc4f16c5c1436b3dd2daf83592645b179581403ad/Cartopy-0.17.0.tar.gz
  Installing build dependencies ... done
    Complete output from command python setup.py egg_info:
    C:\Users\Justin\AppData\Local\Temp\pip-install-cetb0vj7\cartopy\setup.py:171: UserWarning: Unable to determine GEOS version. Ensure you have 3.3.3 or later installed, or installation may fail.
      '.'.join(str(v) for v in GEOS_MIN_VERSION), ))
    Proj 4.9.0 must be installed.

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\Justin\AppData\Local\Temp\pip-install-cetb0vj7\cartopy\

我知道“pip install proj”实际上并没有得到正确的模块版本,所以我去https://proj4.org/install.html下载并安装了我认为可以解决我的问题但似乎没有解决的OSGeo4W(作为参考,我仍然这样做虽然在我的电脑上有这个)。

然后我尝试直接从https://www.lfd.uci.edu/~gohlke/pythonlibs/#cartopy 网站安装 cartopy .whl 并尝试使用“pip install Cartopy-0.17.0-cp37-cp37m-win32.whl”(我使用 Python3 的 32 位版本。 7 所以我相当肯定这是正确的文件)。但是我得到了错误:

C:\Users\Justin\Documents\Python Programs>pip install Cartopy-0.17.0-cp37-cp37m-win32.whl
    Processing c:\users\justin\documents\python programs\cartopy-0.17.0-cp37-cp37m-win32.whl
        Requirement already satisfied: numpy>=1.10 in c:\users\justin\appdata\local\programs\python\python37\lib\site-packages (from Cartopy==0.17.0) (1.15.1)
        Requirement already satisfied: setuptools>=0.7.2 in c:\users\justin\appdata\local\programs\python\python37\lib\site-packages (from Cartopy==0.17.0) (40.6.2)
        Requirement already satisfied: six>=1.3.0 in c:\users\justin\appdata\local\programs\python\python37\lib\site-packages (from Cartopy==0.17.0) (1.11.0)
        Collecting pyshp>=1.1.4 (from Cartopy==0.17.0)
          Downloading https://files.pythonhosted.org/packages/08/3e/3bda7dfdbee0d7a22d38443f5cc8d154ff6d4701e615f4c07bf1ed003563/pyshp-2.0.1.tar.gz (214kB)
            100% |████████████████████████████████| 215kB 1.4MB/s
        Collecting shapely>=1.5.6 (from Cartopy==0.17.0)
          Using cached https://files.pythonhosted.org/packages/a2/fb/7a7af9ef7a35d16fa23b127abee272cfc483ca89029b73e92e93cdf36e6b/Shapely-1.6.4.post2.tar.gz
            Complete output from command python setup.py egg_info:
            Traceback (most recent call last):
              File "<string>", line 1, in <module>
              File "C:\Users\Justin\AppData\Local\Temp\pip-install-sb4uyliy\shapely\setup.py", line 80, in <module>
                from shapely._buildcfg import geos_version_string, geos_version, \
              File "C:\Users\Justin\AppData\Local\Temp\pip-install-sb4uyliy\shapely\shapely\_buildcfg.py", line 200, in <module>
                lgeos = CDLL("geos_c.dll")
              File "c:\users\justin\appdata\local\programs\python\python37\lib\ctypes\__init__.py", line 356, in __init__
                self._handle = _dlopen(self._name, mode)
            OSError: [WinError 126] The specified module could not be found

然后我尝试下载一个名为 tar.gz 的文件,但这就是我迷失自己的地方。我对 tar.gz 不熟悉,我看到你必须“./configure”文件路径,但我不确定如何执行此操作,也不确定应该将所述文件存储在哪里。非常感谢您提供有关此问题的任何指导。

【问题讨论】:

标签: pip cartopy proj


【解决方案1】:

根据对应Github issuehttps://github.com/googlecolab/colabtools/issues/85#issuecomment-372532728的回复, ubuntu 用户在安装 Cartopy 之前需要安装一些额外的包。

sudo apt-get install libproj-dev proj-data proj-bin  
sudo apt-get install libgeos-dev  
sudo pip install cython  
sudo pip install cartopy  

【讨论】:

  • 必须添加sudo apt install python3-dev才能正常工作
  • sudo pip install 似乎不可取
【解决方案2】:

在 Mac 上我这样做了

brew install geos
brew install proj

将此添加到/usr/local/include/proj_api.h 的顶部

#define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H

pip install Cartopy

它适用于 Python3.6,但不适用于 Python3.7.4

【讨论】:

  • 截至 2019 年 9 月 18 日,我按照您的步骤成功在 MacBook Air OS High Sierra 上安装了 Cartopy。
  • 我的项目安装中没有proj_api.h。相反,我得到:The file /usr/local/include/proj_api.h does not exist
【解决方案3】:

我强烈建议使用 conda 进行安装(不一定是完整的 Anaconda 安装),因为它会引入 cartopy 所需的所有可执行依赖项。安装 conda 后,安装最新版本的 cartopy 如下所示:

conda install --channel conda-forge cartopy

不幸的是,在 Windows 上安装 Python 的二进制文件是出了名的可怕(部分原因是工具链会随着每个 Python 版本而变化 [至少,它曾经在 >= python 3.5 之前一直如此),部分原因是科学 Python 生态系统的大多数开发人员通常不使用或无法访问 Windows 机器)。您已经在使用的 Christoph Gohlke 令人难以置信的资源是此声明的主要例外。

我个人花了几个人周的时间在 Windows 上安装 cartopy(在 Enthought 团队和 Christoph Gohlke 等人的大力帮助下)——我将所有这些知识都倾注到 conda-forge 包装生态系统中,这样其他人就不会如果他们选择使用 conda,就必须感受到那种痛苦。

如果你真的,真的,真的必须在你的 Windows 机器上手动安装 cartopy,你可能想看看https://github.com/conda-forge/cartopy-feedstock/tree/master/recipe,它包含了构建 cartopy 所需的所有步骤视窗。除此之外,它的所有依赖项都记录在 conda-forge 组织上类似名称的存储库中。

最后,鉴于您的输出和@cgohlke 的建议 - 尝试安装他的 Shapely 二进制文件https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely

【讨论】:

  • conda install --channel conda-forge cartopy 应该在 Windows 上以管理员身份运行。
【解决方案4】:

对于其他人来说,这里是我在 Linux Mint 20.04 LTS 上使用 python3 venv 环境的方法:

激活环境,然后安装以下:

sudo apt install python3-dev libproj-dev proj-data proj-bin libgeos-dev
pip3 install wheel numpy cartopy

这对我来说似乎很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多