Python安装GDAL的两种实用方法
本文介绍在Python环境中安装GDAL库的两种常见方法。第一种是通过conda直接安装,无需手动下载文件;第二种是先下载对应的whl文件,再使用pip进行本地安装。文章详细说明了Anaconda环境中Scripts目录的路径设置及cmd命令操作步骤,并提供了处理pip安装报错的建议。
方法一:使用Conda直接安装
第一种方法无需手动下载文件,只需直接执行以下命令即可完成安装:
conda install gdal
方法二:下载Whl文件本地安装
第二种方法需要先下载GDAL的whl文件。官方下载速度可能较慢,可以使用提供的链接获取特定版本,例如GDAL-2.2.4-cp27-cp27m-win_am64.whl。
下载链接:https://pan.baidu.com/s/1prPHLJKwoKK505i5qTVZ7g
提取码:egj6
通过百度网盘下载后,将文件保存至本机指定目录。
存放目录主要有两种选择:一是放入Anaconda安装目录下的Scripts文件夹,例如D:\anaconda\Scripts;二是放入特定Anaconda环境的Scripts文件夹,例如D:\anaconda\envs\uav\Scripts(其中uav为自定义环境名,可通过命令conda create -n name python=3.6创建新环境)。
最后,进入D:\Anaconda3\Scripts目录,在空白处按住Shift键并点击鼠标右键,选择“在此处打开命令窗口”(或打开cmd),然后输入相应的安装命令即可。
pip install GDAL‑3.0.1‑cp38‑cp38‑win_amd64.whl
注意:如果使用pip直接安装gdal,可能会遇到报错情况:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gdal
具体的报错信息如下:
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting gdal
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/26/c6/f8846ba726b37f9a1099acb5bff43c309fb913577674c1ba491f6fc60598/GDAL-3.0.1.tar.gz (576kB)
|████████████████████████████████| 583kB 810kB/s
Building wheels for collected packages: gdal
Building wheel for gdal (setup.py) ... error
ERROR: Complete output from command /home/dennis/miniconda3/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-i321u6em/gdal/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-aaneihet --python-tag cp37:
ERROR: running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.7
copying gdal.py -> build/lib.linux-x86_64-3.7
copying ogr.py -> build/lib.linux-x86_64-3.7
copying osr.py -> build/lib.linux-x86_64-3.7
copying gdalconst.py -> build/lib.linux-x86_64-3.7
copying gdalnumeric.py -> build/lib.linux-x86_64-3.7
creating build/lib.linux-x86_64-3.7/osgeo
copying osgeo/gdalconst.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/gdalnumeric.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/osr.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/gnm.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/__init__.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/ogr.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/gdal.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/gdal_array.py -> build/lib.linux-x86_64-3.7/osgeo
Fixing build/lib.linux-x86_64-3.7/gdal.py build/lib.linux-x86_64-3.7/ogr.py build/lib.linux-x86_64-3.7/osr.py build/lib.linux-x86_64-3.7/gdalconst.py build/lib.linux-x86_64-3.7/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/gdalconst.py build/lib.linux-x86_64-3.7/osgeo/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/osr.py build/lib.linux-x86_64-3.7/osgeo/gnm.py build/lib.linux-x86_64-3.7/osgeo/__init__.py build/lib.linux-x86_64-3.7/osgeo/ogr.py build/lib.linux-x86_64-3.7/osgeo/gdal.py build/lib.linux-x86_64-3.7/osgeo/gdal_array.py
Skipping optional fixer: ws_comma
Fixing build/lib.linux-x86_64-3.7/gdal.py build/lib.linux-x86_64-3.7/ogr.py build/lib.linux-x86_64-3.7/osr.py build/lib.linux-x86_64-3.7/gdalconst.py build/lib.linux-x86_64-3.7/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/gdalconst.py build/lib.linux-x86_64-3.7/osgeo/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/osr.py build/lib.linux-x86_64-3.7/osgeo/gnm.py build/lib.linux-x86_64-3.7/osgeo/__init__.py build/lib.linux-x86_64-3.7/osgeo/ogr.py build/lib.linux-x86_64-3.7/osgeo/gdal.py build/lib.linux-x86_64-3.7/osgeo/gdal_array.py
Skipping optional fixer: ws_comma
running build_ext
gcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/miniconda3/include/python3.7m -I/home/dennis/miniconda3/lib/python3.7/site-packages/numpy/core/include -I/home/dennis/miniconda3/include -c gdal_python_cxx11_test.cpp -o gdal_python_cxx11_test.o
gcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/miniconda3/include/python3.7m -I/home/dennis/miniconda3/lib/python3.7/site-packages/numpy/core/include -I/home/dennis/miniconda3/include -c gdal_python_cxx11_test.cpp -o gdal_python_cxx11_test.o -std=c++11
building 'osgeo._gdal' extension
creating build/temp.linux-x86_64-3.7
creating build/temp.linux-x86_64-3.7/extensions
gcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/miniconda3/include/python3.7m -I/home/dennis/miniconda3/lib/python3.7/site-packages/numpy/core/include -I/home/dennis/miniconda3/include -c extensions/gdal_wrap.cpp -o build/temp.linux-x86_64-3.7/extensions/gdal_wrap.o -std=c++11 -I/home/dennis/miniconda3/include
cc1plus: warning: command line option ‘-Wstrict-prototypes' is valid for C/ObjC but not for C++
extensions/gdal_wrap.cpp:4075:1: error: ‘VSIDIR' does not name a type
VSIDIR* wrapper_VSIOpenDir( const char * utf8_path,
^
extensions/gdal_wrap.cpp:4123:38: error: ‘VSIDIR' was not declared in this scope
DirEntry* wrapper_VSIGetNextDirEntry(VSIDIR* dir)
^
extensions/gdal_wrap.cpp:4123:46: error: ‘dir' was not declared in this scope
DirEntry* wrapper_VSIGetNextDirEntry(VSIDIR* dir)
^
extensions/gdal_wrap.cpp:4124:1: error: expected ‘,' or ‘;' before ‘{' token
{
^
extensions/gdal_wrap.cpp:3225:7: warning: ‘char* get_aligned_buffer(char*, GDALDataType)' defined but not used [-Wunused-function]
char* get_aligned_buffer(char* data, GDALDataType ntype)
^
extensions/gdal_wrap.cpp:3244:13: warning: ‘void update_buffer_size(void*, char*, char*, size_t)' defined but not used [-Wunused-function]
static void update_buffer_size(void* obj, char* data, char* data_aligned, size_t buf_size)
^
extensions/gdal_wrap.cpp:3299:5: warning: ‘int GetUseExceptions()' defined but not used [-Wunused-function]
int GetUseExceptions() {
^
extensions/gdal_wrap.cpp:3305:6: warning: ‘void UseExceptions()' defined but not used [-Wunused-function]
void UseExceptions() {
^
extensions/gdal_wrap.cpp:3322:6: warning: ‘void DontUseExceptions()' defined but not used [-Wunused-function]
void DontUseExceptions() {
^
extensions/gdal_wrap.cpp:3370:13: warning: ‘void ClearErrorState()' defined but not used [-Wunused-function]
static void ClearErrorState()
^
error: command 'gcc' failed with exit status 1
----------------------------------------
ERROR: Failed building wheel for gdal
Running setup.py clean for gdal
Failed to build gdal
Installing collected packages: gdal
Running setup.py install for gdal ... error
ERROR: Complete output from command /home/dennis/miniconda3/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-i321u6em/gdal/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-axykekqk/install-record.txt --single-version-externally-managed --compile:
ERROR: running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.7
copying gdal.py -> build/lib.linux-x86_64-3.7
copying ogr.py -> build/lib.linux-x86_64-3.7
copying osr.py -> build/lib.linux-x86_64-3.7
copying gdalconst.py -> build/lib.linux-x86_64-3.7
copying gdalnumeric.py -> build/lib.linux-x86_64-3.7
creating build/lib.linux-x86_64-3.7/osgeo
copying osgeo/gdalconst.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/gdalnumeric.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/osr.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/gnm.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/__init__.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/ogr.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/gdal.py -> build/lib.linux-x86_64-3.7/osgeo
copying osgeo/gdal_array.py -> build/lib.linux-x86_64-3.7/osgeo
Fixing build/lib.linux-x86_64-3.7/gdal.py build/lib.linux-x86_64-3.7/ogr.py build/lib.linux-x86_64-3.7/osr.py build/lib.linux-x86_64-3.7/gdalconst.py build/lib.linux-x86_64-3.7/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/gdalconst.py build/lib.linux-x86_64-3.7/osgeo/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/osr.py build/lib.linux-x86_64-3.7/osgeo/gnm.py build/lib.linux-x86_64-3.7/osgeo/__init__.py build/lib.linux-x86_64-3.7/osgeo/ogr.py build/lib.linux-x86_64-3.7/osgeo/gdal.py build/lib.linux-x86_64-3.7/osgeo/gdal_array.py
Skipping optional fixer: ws_comma
Fixing build/lib.linux-x86_64-3.7/gdal.py build/lib.linux-x86_64-3.7/ogr.py build/lib.linux-x86_64-3.7/osr.py build/lib.linux-x86_64-3.7/gdalconst.py build/lib.linux-x86_64-3.7/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/gdalconst.py build/lib.linux-x86_64-3.7/osgeo/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/osr.py build/lib.linux-x86_64-3.7/osgeo/gnm.py build/lib.linux-x86_64-3.7/osgeo/__init__.py build/lib.linux-x86_64-3.7/osgeo/ogr.py build/lib.linux-x86_64-3.7/osgeo/gdal.py build/lib.linux-x86_64-3.7/osgeo/gdal_array.py
Skipping optional fixer: ws_comma
running build_ext
gcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/miniconda3/include/python3.7m -I/home/dennis/miniconda3/lib/python3.7/site-packages/numpy/core/include -I/home/dennis/miniconda3/include -c gdal_python_cxx11_test.cpp -o gdal_python_cxx11_test.o
gcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/miniconda3/include/python3.7m -I/home/dennis/miniconda3/lib/python3.7/site-packages/numpy/core/include -I/home/dennis/miniconda3/include -c gdal_python_cxx11_test.cpp -o gdal_python_cxx11_test.o -std=c++11
building 'osgeo._gdal' extension
creating build/temp.linux-x86_64-3.7
creating build/temp.linux-x86_64-3.7/extensions
gcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/miniconda3/include/python3.7m -I/home/dennis/miniconda3/lib/python3.7/site-packages/numpy/core/include -I/home/dennis/miniconda3/include -c extensions/gdal_wrap.cpp -o build/temp.linux-x86_64-3.7/extensions/gdal_wrap.o -std=c++11 -I/home/dennis/miniconda3/include
cc1plus: warning: command line option ‘-Wstrict-prototypes' is valid for C/ObjC but not for C++
extensions/gdal_wrap.cpp:4075:1: error: ‘VSIDIR' does not name a type
VSIDIR* wrapper_VSIOpenDir( const char * utf8_path,
^
extensions/gdal_wrap.cpp:4123:38: error: ‘VSIDIR' was not declared in this scope
DirEntry* wrapper_VSIGetNextDirEntry(VSIDIR* dir)
^
extensions/gdal_wrap.cpp:4123:46: error: ‘dir' was not declared in this scope
DirEntry* wrapper_VSIGetNextDirEntry(VSIDIR* dir)
^
extensions/gdal_wrap.cpp:4124:1: error: expected ‘,' or ‘;' before ‘{' token
{
^
extensions/gdal_wrap.cpp:3225:7: warning: ‘char* get_aligned_buffer(char*, GDALDataType)' defined but not used [-Wunused-function]
char* get_aligned_buffer(char* data, GDALDataType ntype)
^
extensions/gdal_wrap.cpp:3244:13: warning: ‘void update_buffer_size(void*, char*, char*, size_t)' defined but not used [-Wunused-function]
static void update_buffer_size(void* obj, char* data, char* data_aligned, size_t buf_size)
^
extensions/gdal_wrap.cpp:3299:5: warning: ‘int GetUseExceptions()' defined but not used [-Wunused-function]
int GetUseExceptions() {
^
extensions/gdal_wrap.cpp:3305:6: warning: ‘void UseExceptions()' defined but not used [-Wunused-function]
void UseExceptions() {
^
extensions/gdal_wrap.cpp:3322:6: warning: ‘void DontUseExceptions()' defined but not used [-Wunused-function]
void DontUseExceptions() {
^
extensions/gdal_wrap.cpp:3370:13: warning: ‘void ClearErrorState()' defined but not used [-Wunused-function]
static void ClearErrorState()
^
error: command 'gcc' failed with exit status 1
----------------------------------------
ERROR: Command "/home/dennis/miniconda3/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-i321
总结
以上介绍了Python安装GDAL的两种方法,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持! 如果本文对您有帮助,欢迎转载,请注明出处,谢谢!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













