【问题标题】:Install GDAL on Python 2.7 on a Amazon Linux virtual server在 Amazon Linux 虚拟服务器上的 Python 2.7 上安装 GDAL
【发布时间】:2017-12-09 22:32:50
【问题描述】:

我有一个 t2.micro Amazon Linux 实例正在运行。

Python 2.7.12 已预先安装。我想用 Python 安装 GDAL。

我已经安装了 gcc c++ 和 numpy。

以下命令都不适合我:

sudo yum install gdal-devel

sudo yum install gdal

sudo yum install python-gdal

他们都导致以下消息说。

No package {PACKAGE_NAME} available.
Error: Nothing to do

我无法在 Amazon Linux 实例上运行 apt-get。

也没有任何相关的 SO 帖子对我有用。

我也跑了

sudo easy_install GDAL

这给出了如下的 MemoryError:

Searching for GDAL
Reading https://pypi.python.org/simple/GDAL/
Best match: GDAL 2.2.1
Downloading https://pypi.python.org/packages/f2/c3/1cadfcae9a4330c3a68c41e3bc96a5d228883eec6ea3e2fc6321165b863c/GDAL-2.2.1.tar.gz#md5=4d78446b1053825a2d15b70730288b0f
Processing GDAL-2.2.1.tar.gz
Writing /tmp/easy_install-1VNr7G/GDAL-2.2.1/setup.cfg
Running GDAL-2.2.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-1VNr7G/GDAL-2.2.1/egg-dist-tmp-q1jQCi
Traceback (most recent call last):
  File "/usr/bin/easy_install", line 9, in <module>
    load_entry_point('setuptools==12.2', 'console_scripts', 'easy_install-2.7')()
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 2297, in main
    distclass=DistributionWithoutHelpCommands, **kw
  File "/usr/lib64/python2.7/distutils/core.py", line 151, in setup
    dist.run_commands()
  File "/usr/lib64/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 393, in run
    self.easy_install(spec, not self.no_deps)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 642, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 672, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 857, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1085, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1071, in run_setup
    run_setup(setup_script, args)
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 240, in run_setup
    raise
  File "/usr/lib64/python2.7/contextlib.py", line 35, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 193, in setup_context
    yield
  File "/usr/lib64/python2.7/contextlib.py", line 35, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 152, in save_modules
    yield saved
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 126, in __exit__
    self._saved = UnpickleableException.dump(type, exc)
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 110, in dump
    return cls.dump(cls, cls(repr(exc)))
MemoryError

【问题讨论】:

    标签: linux python-2.7 amazon-web-services amazon-ec2 gdal


    【解决方案1】:

    它在 EPEL 存储库中。试试这个:

    sudo yum-config-manager --enable epel
    sudo yum install gdal-python
    sudo yum -y update
    sudo yum -y install make automake gcc gcc-c++ libcurl-devel proj-devel geos-devel
    cd /tmp
    curl -L http://download.osgeo.org/gdal/2.0.0/gdal-2.0.0.tar.gz | tar zxf -
    cd gdal-2.0.0/
    ./configure --prefix=/usr/local --with-python
    make -j4
    sudo make install
    sudo easy_install GDAL
    export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
    sudo ldconfig
    

    我能够让它在运行 amazon linux 的新 t2.micro 上工作。 最终导出需要在 bash 脚本或相关位置永久保存,具体取决于您的需要。

    之后我可以from osgeo import gdal

    您可以在 /tmp/gdal-2.0.0 文件夹中make clean 完成后释放一些空间。

    警告 - 在 t2.micro 上构建需要很长时间

    【讨论】:

    • 谢谢!我能够按照您的指示安装 gdal。但现在的问题是我如何在 Python 中使用 gdal。当我尝试在 Python 中导入 gdal 时,它引发了“没有名为 gdal 的模块”的错误。
    • 是的。结果是“错误:找不到 GDAL/OGR 模块。”看起来它没有正确安装为 python 包。
    • 我也试过 help('modules') 。在 Python 安装的模块列表中找不到“gdal”。
    • 上面的命令可能只安装了绑定。您可能需要单独安装这些库......比如sudo yum install gdal(未测试)
    【解决方案2】:

    我在我的 EC2 实例 (m4.large) 上关注了这个 link,它有 Amazon Linux 和 python 2.7。它对我来说非常有效(我将 Gdal 2.0.0 更改为 2.2.0)。只要确保您拥有所有依赖项(即 numpy 和 libgdal)。如果您有任何问题,请告诉我!

    【讨论】:

      【解决方案3】:

      Nix 包管理器为我工作:

      curl https://nixos.org/nix/install | sh
      . /home/ec2-user/.nix-profile/etc/profile.d/nix.sh
      nix-env -i gdal
      

      【讨论】:

        猜你喜欢
        • 2017-10-21
        • 2016-04-20
        • 1970-01-01
        • 1970-01-01
        • 2019-08-18
        • 2022-07-07
        • 1970-01-01
        • 1970-01-01
        • 2014-10-12
        相关资源
        最近更新 更多