在 Anaconda 中安装 pyproj python (Ubuntu)
Installing pyproj in Anaconda python (Ubuntu)
我正在尝试在远程服务器 运行 anaconda python 2.7.15 Ubuntu 16.04 上安装 pyproj。在 运行 conda install -c conda-forge pyproj
(https://anaconda.org/conda-forge/pyproj 处第一个列出的选项)之后,包安装成功 (pyproj 2.0.2)。但是,在 运行 我的程序中,我得到以下回溯:
Traceback (most recent call last):
File "run_qc_worker.py", line 1288, in <module>
GC.make_metadata_caches() # For percentiles check
File "/home/ubuntu/qc-mem/qc/lib/global_class.py", line 384, in make_metadata_caches
mercator_arr = self.proj_arr(lat_lon_arr) # project to x/y
File "/home/ubuntu/qc-mem/qc/lib/global_class.py", line 421, in proj_arr
inproj = Proj(init='epsg:4326') # WGS 84
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/pyproj/__init__.py", line 322, in __init__
self.crs = CRS.from_user_input(projparams if projparams is not None else kwargs)
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/pyproj/crs.py", line 224, in from_user_input
return cls(**value)
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/pyproj/crs.py", line 146, in __init__
super(CRS, self).__init__(projstring)
File "pyproj/_crs.pyx", line 307, in pyproj._crs._CRS.__init__
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/pyproj/datadir.py", line 62, in get_data_dir
"Valid PROJ.4 data directory not found."
pyproj.exceptions.DataDirError: Valid PROJ.4 data directory not found.Either set the path using the environmental variable PROJ_LIB or with `pyproj.datadir.set_data_dir`.
在我的python脚本中,我用from pyproj import Proj, transform
导入,相关的代码行是:
inproj = Proj(init='epsg:4326') # WGS 84
outproj = Proj(init='epsg:3857') # WGS 84 / Pseudo-Mercator
显然,pyproj 无法找到 data
目录。搜索目录位于
~/anaconda2/lib/python2.7/site-packages/pyproj
,我确认没有data
目录。我有另一台服务器在 anaconda3 上安装了 pyproj,它确实包含一个 data
目录(带有一个 epsg
文件)。我将此目录复制到 anaconda2 服务器,并按照回溯中的说明使用环境变量声明路径:
export PROJ_LIB=~/anaconda2/lib/python2.7/site-packages/pyproj/data
我仍然得到同样的错误回溯。
我在 pyproj (https://github.com/pyproj4/pyproj/) 的 github 存储库中找不到 data
目录。
我该如何解决这个错误?
我可以通过安装 pyproj
的早期版本来解决这个问题。我用 pyproj-1.9.6
、运行 conda install -c conda-forge/label/gcc7 pyproj
替换了 pyproj-2.0.2
安装。 (作为此安装的一部分,proj4
也从 6.0.0
降级为 5.2.0
)。这是 https://anaconda.org/conda-forge/pyproj.
中列出的第二个可用的 conda 安装选项
如上所述,我还从另一台服务器上的 anaconda3 安装中手动复制 (scp
) 现有的 data
目录,然后使用路径导出 PROJ_LIB
环境变量到 data
目录。
请注意,当 运行 pyproj-1.9.6
在将路径导出到 data
之前,错误回溯指示 RuntimeError: 'no arguments in initialization list'
。其他用户在这里很好地描述了这个问题:https://github.com/pyproj4/pyproj/issues/134.
pyproj 2.2.0 的当前版本适用于我:
(base) $ conda create -c conda-forge -n proj27 python=2.7 pyproj
...
proj4 conda-forge/linux-64::proj4-6.1.0-he751ad9_2
pyproj conda-forge/linux-64::pyproj-2.2.0-py27hc44880f_0
...
(base) snowal@snowal-lx2:~$ conda activate proj27
(proj27) snowal@snowal-lx2:~$ python
Python 2.7.15 | packaged by conda-forge | (default, Feb 28 2019, 04:00:11)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyproj import Proj, transform
>>> inproj = Proj(init='epsg:4326') # WGS 84
>>> outproj = Proj(init='epsg:3857') # WGS 84 / Pseudo-Mercator
>>> import pyproj
>>> pyproj.__version__
'2.2.0'
我正在尝试在远程服务器 运行 anaconda python 2.7.15 Ubuntu 16.04 上安装 pyproj。在 运行 conda install -c conda-forge pyproj
(https://anaconda.org/conda-forge/pyproj 处第一个列出的选项)之后,包安装成功 (pyproj 2.0.2)。但是,在 运行 我的程序中,我得到以下回溯:
Traceback (most recent call last):
File "run_qc_worker.py", line 1288, in <module>
GC.make_metadata_caches() # For percentiles check
File "/home/ubuntu/qc-mem/qc/lib/global_class.py", line 384, in make_metadata_caches
mercator_arr = self.proj_arr(lat_lon_arr) # project to x/y
File "/home/ubuntu/qc-mem/qc/lib/global_class.py", line 421, in proj_arr
inproj = Proj(init='epsg:4326') # WGS 84
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/pyproj/__init__.py", line 322, in __init__
self.crs = CRS.from_user_input(projparams if projparams is not None else kwargs)
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/pyproj/crs.py", line 224, in from_user_input
return cls(**value)
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/pyproj/crs.py", line 146, in __init__
super(CRS, self).__init__(projstring)
File "pyproj/_crs.pyx", line 307, in pyproj._crs._CRS.__init__
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/pyproj/datadir.py", line 62, in get_data_dir
"Valid PROJ.4 data directory not found."
pyproj.exceptions.DataDirError: Valid PROJ.4 data directory not found.Either set the path using the environmental variable PROJ_LIB or with `pyproj.datadir.set_data_dir`.
在我的python脚本中,我用from pyproj import Proj, transform
导入,相关的代码行是:
inproj = Proj(init='epsg:4326') # WGS 84
outproj = Proj(init='epsg:3857') # WGS 84 / Pseudo-Mercator
显然,pyproj 无法找到 data
目录。搜索目录位于
~/anaconda2/lib/python2.7/site-packages/pyproj
,我确认没有data
目录。我有另一台服务器在 anaconda3 上安装了 pyproj,它确实包含一个 data
目录(带有一个 epsg
文件)。我将此目录复制到 anaconda2 服务器,并按照回溯中的说明使用环境变量声明路径:
export PROJ_LIB=~/anaconda2/lib/python2.7/site-packages/pyproj/data
我仍然得到同样的错误回溯。
我在 pyproj (https://github.com/pyproj4/pyproj/) 的 github 存储库中找不到 data
目录。
我该如何解决这个错误?
我可以通过安装 pyproj
的早期版本来解决这个问题。我用 pyproj-1.9.6
、运行 conda install -c conda-forge/label/gcc7 pyproj
替换了 pyproj-2.0.2
安装。 (作为此安装的一部分,proj4
也从 6.0.0
降级为 5.2.0
)。这是 https://anaconda.org/conda-forge/pyproj.
如上所述,我还从另一台服务器上的 anaconda3 安装中手动复制 (scp
) 现有的 data
目录,然后使用路径导出 PROJ_LIB
环境变量到 data
目录。
请注意,当 运行 pyproj-1.9.6
在将路径导出到 data
之前,错误回溯指示 RuntimeError: 'no arguments in initialization list'
。其他用户在这里很好地描述了这个问题:https://github.com/pyproj4/pyproj/issues/134.
pyproj 2.2.0 的当前版本适用于我:
(base) $ conda create -c conda-forge -n proj27 python=2.7 pyproj
...
proj4 conda-forge/linux-64::proj4-6.1.0-he751ad9_2
pyproj conda-forge/linux-64::pyproj-2.2.0-py27hc44880f_0
...
(base) snowal@snowal-lx2:~$ conda activate proj27
(proj27) snowal@snowal-lx2:~$ python
Python 2.7.15 | packaged by conda-forge | (default, Feb 28 2019, 04:00:11)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyproj import Proj, transform
>>> inproj = Proj(init='epsg:4326') # WGS 84
>>> outproj = Proj(init='epsg:3857') # WGS 84 / Pseudo-Mercator
>>> import pyproj
>>> pyproj.__version__
'2.2.0'