无法为 cartopy linux 安装 Proj 8.0.0

Rec*_*ive 5 python linux ubuntu proj cartopy

我正在尝试在 Ubuntu 上安装 Cartopy,并且需要安装proj v8.0.0Cartopy 的二进制文件。然而,当我尝试时,apt-get install proj-bin我只能得到proj v6.3.1。如何安装最新(或至少v8.0.0)的 cartopy 项目?

Rec*_*ive 7

我在这里回答我自己的问题,部分是为了帮助其他人解决这个问题,部分是为了自己存档,这样我知道如果再次遇到这个问题如何解决这个问题。我花了很长时间试图弄清楚,并写了详细的说明,所以请看下面:

安装 cartopy 是一个巨大的痛苦,我发现使用 conda 是一个非常糟糕的主意(它已经让我自己和 python 一起变砖了很多次)

此安装适用于 LINUX。

步骤0.更新apt:

apt update
Run Code Online (Sandbox Code Playgroud)

步骤1.安装GEOS:

运行以下命令安装 GEOS:

apt-get install libgeos-dev
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请使用以下命令安装所有文件:

apt-get install libgeos-dev libgeos++-dev libgeos-3.8.0 libgeos-c1v5 libgeos-doc
Run Code Online (Sandbox Code Playgroud)

步骤2.安装项目依赖项:

  • 安装cmake:
apt install cmake
Run Code Online (Sandbox Code Playgroud)
  • 安装sqlite3:
apt install sqlite3
Run Code Online (Sandbox Code Playgroud)
  • 安装curl开发包:
apt install curl && apt-get install libcurl4-openssl-dev
Run Code Online (Sandbox Code Playgroud)

步骤3.安装项目

尝试apt-get一下以防万一它有效:

不幸的是,cartopy 最低要求 proj v8.0.0,但是如果使用 apt 安装 proj,则只能安装 proj v6.3.1

仅供参考,以防发生任何变化,这是从 apt 安装 proj 的命令:

apt-get install proj-bin
Run Code Online (Sandbox Code Playgroud)

我相当确定这就是您所需要的,但如果不是,此命令将安装其余的 proj 文件:

apt-get install proj-bin libproj-dev proj-data
Run Code Online (Sandbox Code Playgroud)

要删除上述安装,请运行:

apt-get remove proj-bin
Run Code Online (Sandbox Code Playgroud)

或者:

apt-get remove proj-bin libproj-dev proj-data
Run Code Online (Sandbox Code Playgroud)

从源代码构建项目

因此,如果上述命令不起作用(截至 2022/4/8 不起作用),请按照以下说明从安装 proj :

  • 转到您的安装文件夹并下载 proj-9.0.0 (或带有 的任何版本proj-x.x.x.tar.gz):
wget https://download.osgeo.org/proj/proj-9.0.0.tar.gz 
Run Code Online (Sandbox Code Playgroud)
  • 提取 tar.gz 文件:
tar -xf proj-9.0.0.tar.gz
Run Code Online (Sandbox Code Playgroud)
  • cd 进入文件夹:
cd proj-9.0.0
Run Code Online (Sandbox Code Playgroud)
  • 创建一个 build 文件夹并 cd 进入其中:
mkdir build && cd build
Run Code Online (Sandbox Code Playgroud)
  • 运行(这可能需要一段时间):
cmake ..
cmake --build .
cmake --build . --target install
Run Code Online (Sandbox Code Playgroud)
  • 运行以确保一切安装正确:
ctest
Run Code Online (Sandbox Code Playgroud)

测试命令在我的一项测试中失败了 ( 19 - nkg),但其他方面都很好。

./bin您应该在目录中找到所需的文件

最后:

  • 将二进制文件移动到 /bin 目录:
cp ./bin/* /bin
Run Code Online (Sandbox Code Playgroud)
  • 根据 Justino,您可能还需要移动库:
cp ./lib/* /lib
Run Code Online (Sandbox Code Playgroud)

现在,完成所有这些之后,您终于可以使用 pip 安装 cartopy:

pip install cartopy
Run Code Online (Sandbox Code Playgroud)

完成此操作后,我的 cartopy 仍然无法工作。我下周回家处理这个问题,回来后突然就开始工作了,所以也许可以尝试重新启动