mss 1.8.2 cannot be started from menu entry (linux)

Issue #442 on hold
Joern Ungermann created an issue

The mss program cannot be started from the application menu.

Error in log:

Traceback (most recent call last):
  File "/home/icg173/anaconda3/envs/mss-1.8.2/bin/mss", line 7, in <module>
    from mslib.msui.mss_pyui import main
  File "/home/icg173/anaconda3/envs/mss-1.8.2/lib/python3.6/site-packages/mslib/msui/mss_pyui.
py", line 49, in <module>
    from mslib.msui.mss_qt import ui_mainwindow as ui
  File "/home/icg173/anaconda3/envs/mss-1.8.2/lib/python3.6/site-packages/mslib/msui/mss_qt.py
", line 40, in <module>
    from mslib.utils import config_loader, FatalUserError
  File "/home/icg173/anaconda3/envs/mss-1.8.2/lib/python3.6/site-packages/mslib/utils.py", lin
e 45, in <module>
    import mpl_toolkits.basemap.pyproj as pyproj
  File "/home/icg173/anaconda3/envs/mss-1.8.2/lib/python3.6/site-packages/mpl_toolkits/basemap
/__init__.py", line 155, in <module>
    pyproj_datadir = os.environ['PROJ_LIB']
  File "/home/icg173/anaconda3/envs/mss-1.8.2/lib/python3.6/os.py", line 669, in __getitem__
    raise KeyError(key) from None
KeyError: 'PROJ_LIB'

The program can be started from the terminal after activating the environment into which it was installed.

This is the list of installed packages:

icg173@icg1705 ~ % conda list
# packages in environment at /home/icg173/anaconda3/envs/mss-1.8.2:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
apipkg                    1.5                      py36_0  
appdirs                   1.4.3            py36h28b3542_0  
argcomplete               1.10.0                   py36_0  
asn1crypto                0.24.0                   py36_0  
astropy                   3.2.1            py36h7b6447c_0  
atomicwrites              1.3.0                    py36_1  
attrs                     19.1.0                   py36_1  
basemap                   1.2.0            py36h705c2d8_0  
bcrypt                    3.1.6            py36h7b6447c_0  
beautifulsoup4            4.7.1                    py36_1  
blas                      1.0                         mkl  
bzip2                     1.0.8                h7b6447c_0  
ca-certificates           2019.5.15                     1  
certifi                   2019.6.16                py36_1  
cffi                      1.12.3           py36h2e261b9_0  
cftime                    1.0.3.4         py36hdd07704_1001  
chameleon                 3.6                      py36_0  
chardet                   3.0.4                 py36_1003  
click                     7.0                      py36_0  
cryptography              2.7              py36h1ba5d50_0  
curl                      7.65.2               hbc83047_0  
cycler                    0.10.0                   py36_0  
dbus                      1.13.6               h746ee38_0  
execnet                   1.6.1                      py_0  
expat                     2.2.6                he6710b0_0  
flask                     1.1.1                      py_0  
flask-httpauth            3.3.0                      py_0    conda-forge
fontconfig                2.13.0               h9420a91_0  
freetype                  2.9.1                h8a8886c_1  
fs                        2.4.10                   py36_0    conda-forge
fs.sshfs                  0.6.1                    py36_0    conda-forge
fs.webdavfs               0.3.7                    py36_0    conda-forge
fs_filepicker             0.3.7                    py36_2    conda-forge
furl                      2.0.0                    py36_0  
future                    0.17.1                   py36_0  
geos                      3.6.2                heeff764_2  
glib                      2.56.2               hd408876_0  
gst-plugins-base          1.14.0               hbbd80ab_1  
gstreamer                 1.14.0               hb453b48_1  
hdf4                      4.2.13               h3ca952b_2  
hdf5                      1.10.4               hb1b8bf9_0  
html5lib                  1.0.1                      py_0  
humanfriendly             4.18                     py36_0  
icu                       58.2                 h9c2bf20_1  
idna                      2.8                      py36_0  
importlib_metadata        0.19                     py36_0  
intel-openmp              2019.4                      243  
isodate                   0.6.0                      py_1  
itsdangerous              1.1.0                    py36_0  
jinja2                    2.10.1                   py36_0  
jpeg                      9b                   h024ee3a_2  
jplephem                  2.9                pyh11f86e8_0    conda-forge
kiwisolver                1.1.0            py36he6710b0_0  
krb5                      1.16.1               h173b8e3_7  
libcurl                   7.65.2               h20c2e04_0  
libedit                   3.1.20181209         hc058e9b_0  
libffi                    3.2.1                hd88cf55_4  
libgcc-ng                 9.1.0                hdf63c60_0  
libgfortran-ng            7.3.0                hdf63c60_0  
libnetcdf                 4.6.1                h11d0813_2  
libpng                    1.6.37               hbc83047_0  
libsodium                 1.0.16               h1bed415_0  
libssh2                   1.8.2                h1ba5d50_0  
libstdcxx-ng              9.1.0                hdf63c60_0  
libtiff                   4.0.10               h2733197_2  
libuuid                   1.0.3                h1bed415_2  
libxcb                    1.13                 h1bed415_1  
libxml2                   2.9.9                hea5a465_1  
libxslt                   1.1.33               h7d1a2b0_0  
lxml                      4.3.4            py36hefd8a0e_0  
markupsafe                1.1.1            py36h7b6447c_0  
matplotlib                3.0.2            py36h5429711_0  
mkl                       2019.4                      243  
mkl-service               2.0.2            py36h7b6447c_0  
mkl_fft                   1.0.12           py36ha843d7b_0  
mkl_random                1.0.2            py36hd81dba3_0  
more-itertools            7.2.0                    py36_0  
mss                       1.8.2                    py36_0    conda-forge
ncurses                   6.1                  he6710b0_1  
netcdf4                   1.4.2            py36h808af73_0  
numpy                     1.16.4           py36h7e9f1db_0  
numpy-base                1.16.4           py36hde5b4d6_0  
olefile                   0.46                     py36_0  
openssl                   1.1.1c               h7b6447c_1  
orderedmultidict          1.0.1                    py36_0  
owslib                    0.18.0                     py_0  
packaging                 19.0                     py36_0  
paramiko                  2.4.2                    py36_0  
pcre                      8.43                 he6710b0_0  
pillow                    5.4.1            py36h34e0f95_0  
pip                       19.1.1                   py36_0  
pluggy                    0.12.0                     py_0  
proj4                     5.2.0                he6710b0_1  
psutil                    5.6.3            py36h7b6447c_0  
py                        1.8.0                    py36_0  
pyasn1                    0.4.6                      py_0  
pycparser                 2.19                     py36_0  
pynacl                    1.3.0            py36h7b6447c_0  
pyopenssl                 19.0.0                   py36_0  
pyparsing                 2.4.0                      py_0  
pyproj                    1.9.6            py36h14380d9_0  
pyqt                      5.9.2            py36h05f1152_2  
pyshp                     2.1.0                      py_0  
pysocks                   1.7.0                    py36_0  
pytest                    5.0.1                    py36_0  
pytest-arraydiff          0.3              py36h39e3cac_0  
pytest-astropy            0.5.0                    py36_0  
pytest-doctestplus        0.3.0                    py36_0  
pytest-openfiles          0.3.2                    py36_0  
pytest-remotedata         0.3.2                    py36_0  
python                    3.6.9                h265db76_0  
python-dateutil           2.8.0                    py36_0  
pytz                      2019.1                     py_0  
qt                        5.9.7                h5867ecd_1  
readline                  7.0                  h7b6447c_5  
requests                  2.22.0                   py36_0  
scipy                     1.3.0            py36h7c811a0_0  
setuptools                41.0.1                   py36_0  
sgp4                      1.4                pyh24bf2e0_3    conda-forge
sip                       4.19.8           py36hf484d3e_0  
six                       1.12.0                   py36_0  
skyfield                  1.11                       py_0    conda-forge
soupsieve                 1.9.2                    py36_0  
sqlite                    3.29.0               h7b6447c_0  
tk                        8.6.8                hbc83047_0  
tornado                   6.0.3            py36h7b6447c_0  
unicodecsv                0.14.1                   py36_0  
urllib3                   1.24.2                   py36_0  
wcwidth                   0.1.7                    py36_0  
webdavclient2             0.1.1                      py_0    conda-forge
webencodings              0.5.1                    py36_1  
werkzeug                  0.15.4                     py_0  
wheel                     0.33.4                   py36_0  
xz                        5.2.4                h14c3975_4  
zipp                      0.5.2                      py_0  
zlib                      1.2.11               h7b6447c_3  
zstd                      1.3.7                h0b5b093_0  

In contrast to mss-1.8.1, this version uses again python-3.6.

I “fixed” this by exchanging the access to PROJ_LIB by

pyproj_datadir = os.getenv('PROJ_LIB', pyproj.datadir.pyproj_datadir)

I also tried out this

import os
if "PROJ_LIB" not in os.environ:
    import pyproj                                                                                                                                                                             
    os.environ["PROJ_LIB"] = pyproj.datadir.pyproj_datadir

at the beginning of mss_pyui.py, and this also worked. Requiring this variable to be set is really unbelievably annoying of this anaconda package.

Comments (12)

  1. Reimar Bauer

    conda create -n mss1821py3 mss python==3.7

    The python version is a different issue, we may be split this into a new issue. I guess the answer is somewhere in the users available specs. This is a hint only, that we may be find a solution which can be added to the docs.

    conda create -n mss1821py3 mss python==3.7
    
    added / updated specs:
        - mss
        - python==3.7
    
    
    The following packages will be downloaded:
    
        package                    |            build
        ---------------------------|-----------------
        cftime-1.0.3.4             |py37hdd07704_1001         310 KB
        curl-7.61.0                |       h84994c4_0         131 KB
        hdf5-1.10.2                |       hba1933b_1         3.8 MB
        libcurl-7.61.0             |       h1ad7b7a_0         355 KB
        libnetcdf-4.6.1            |       h10edf3e_1         833 KB
        mkl-service-2.0.2          |   py37h7b6447c_0          65 KB
        mkl_fft-1.0.14             |   py37ha843d7b_0         172 KB
        more-itertools-7.2.0       |           py37_0          99 KB
        mss-1.8.2                  |           py37_1         557 KB  conda-forge
        netcdf4-1.4.2              |   py37h4b4f87f_0         478 KB
        packaging-19.1             |           py37_0          46 KB
        pytest-remotedata-0.3.2    |           py37_0          15 KB
        python-3.7.0               |       h6e4f718_3        27.2 MB
        scipy-1.3.0                |   py37h7c811a0_0        18.0 MB
        ------------------------------------------------------------
                                               Total:        52.0 MB
    
    The following NEW packages will be INSTALLED:
    
      _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
      apipkg             pkgs/main/linux-64::apipkg-1.5-py37_0
      appdirs            pkgs/main/linux-64::appdirs-1.4.3-py37h28b3542_0
      argcomplete        pkgs/main/linux-64::argcomplete-1.10.0-py37_0
      asn1crypto         pkgs/main/linux-64::asn1crypto-0.24.0-py37_0
      astropy            pkgs/main/linux-64::astropy-3.2.1-py37h7b6447c_0
      atomicwrites       pkgs/main/linux-64::atomicwrites-1.3.0-py37_1
      attrs              pkgs/main/linux-64::attrs-19.1.0-py37_1
      basemap            pkgs/main/linux-64::basemap-1.2.0-py37h705c2d8_0
      bcrypt             pkgs/main/linux-64::bcrypt-3.1.6-py37h7b6447c_0
      beautifulsoup4     pkgs/main/linux-64::beautifulsoup4-4.7.1-py37_1
      blas               pkgs/main/linux-64::blas-1.0-mkl
      bzip2              pkgs/main/linux-64::bzip2-1.0.8-h7b6447c_0
      ca-certificates    pkgs/main/linux-64::ca-certificates-2019.5.15-1
      cached-property    pkgs/main/linux-64::cached-property-1.5.1-py37_0
      certifi            pkgs/main/linux-64::certifi-2019.6.16-py37_1
      cffi               pkgs/main/linux-64::cffi-1.12.3-py37h2e261b9_0
      cftime             pkgs/main/linux-64::cftime-1.0.3.4-py37hdd07704_1001
      chameleon          pkgs/main/linux-64::chameleon-3.6-py37_0
      chardet            pkgs/main/linux-64::chardet-3.0.4-py37_1003
      click              pkgs/main/linux-64::click-7.0-py37_0
      cryptography       pkgs/main/linux-64::cryptography-2.3.1-py37hc365091_0
      curl               pkgs/main/linux-64::curl-7.61.0-h84994c4_0
      cycler             pkgs/main/linux-64::cycler-0.10.0-py37_0
      dbus               pkgs/main/linux-64::dbus-1.13.6-h746ee38_0
      execnet            pkgs/main/noarch::execnet-1.6.1-py_0
      expat              pkgs/main/linux-64::expat-2.2.6-he6710b0_0
      flask              pkgs/main/noarch::flask-1.1.1-py_0
      flask-httpauth     conda-forge/noarch::flask-httpauth-3.3.0-py_0
      fontconfig         pkgs/main/linux-64::fontconfig-2.13.0-h9420a91_0
      freetype           pkgs/main/linux-64::freetype-2.9.1-h8a8886c_1
      fs                 conda-forge/linux-64::fs-2.3.0-py37_0
      fs.sshfs           conda-forge/linux-64::fs.sshfs-0.10.3-py37_0
      fs.webdavfs        conda-forge/linux-64::fs.webdavfs-0.3.7-py37_0
      fs_filepicker      conda-forge/linux-64::fs_filepicker-0.3.7-py37_2
      furl               pkgs/main/linux-64::furl-2.0.0-py37_0
      future             pkgs/main/linux-64::future-0.17.1-py37_0
      geos               pkgs/main/linux-64::geos-3.6.2-heeff764_2
      glib               pkgs/main/linux-64::glib-2.56.2-hd408876_0
      gst-plugins-base   pkgs/main/linux-64::gst-plugins-base-1.14.0-hbbd80ab_1
      gstreamer          pkgs/main/linux-64::gstreamer-1.14.0-hb453b48_1
      hdf4               pkgs/main/linux-64::hdf4-4.2.13-h3ca952b_2
      hdf5               pkgs/main/linux-64::hdf5-1.10.2-hba1933b_1
      html5lib           pkgs/main/linux-64::html5lib-1.0.1-py37_0
      humanfriendly      pkgs/main/linux-64::humanfriendly-4.18-py37_0
      icu                pkgs/main/linux-64::icu-58.2-h9c2bf20_1
      idna               pkgs/main/linux-64::idna-2.8-py37_0
      importlib_metadata pkgs/main/linux-64::importlib_metadata-0.19-py37_0
      intel-openmp       pkgs/main/linux-64::intel-openmp-2019.4-243
      isodate            pkgs/main/noarch::isodate-0.6.0-py_1
      itsdangerous       pkgs/main/linux-64::itsdangerous-1.1.0-py37_0
      jinja2             pkgs/main/linux-64::jinja2-2.10.1-py37_0
      jpeg               pkgs/main/linux-64::jpeg-9b-h024ee3a_2
      jplephem           conda-forge/noarch::jplephem-2.9-pyh11f86e8_0
      kiwisolver         pkgs/main/linux-64::kiwisolver-1.1.0-py37he6710b0_0
      libcurl            pkgs/main/linux-64::libcurl-7.61.0-h1ad7b7a_0
      libedit            pkgs/main/linux-64::libedit-3.1.20181209-hc058e9b_0
      libffi             pkgs/main/linux-64::libffi-3.2.1-hd88cf55_4
      libgcc-ng          pkgs/main/linux-64::libgcc-ng-9.1.0-hdf63c60_0
      libgfortran-ng     pkgs/main/linux-64::libgfortran-ng-7.3.0-hdf63c60_0
      libnetcdf          pkgs/main/linux-64::libnetcdf-4.6.1-h10edf3e_1
      libpng             pkgs/main/linux-64::libpng-1.6.37-hbc83047_0
      libsodium          pkgs/main/linux-64::libsodium-1.0.16-h1bed415_0
      libssh2            pkgs/main/linux-64::libssh2-1.8.0-h9cfc8f7_4
      libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-9.1.0-hdf63c60_0
      libtiff            pkgs/main/linux-64::libtiff-4.0.10-h2733197_2
      libuuid            pkgs/main/linux-64::libuuid-1.0.3-h1bed415_2
      libxcb             pkgs/main/linux-64::libxcb-1.13-h1bed415_1
      libxml2            pkgs/main/linux-64::libxml2-2.9.9-hea5a465_1
      libxslt            pkgs/main/linux-64::libxslt-1.1.33-h7d1a2b0_0
      lxml               pkgs/main/linux-64::lxml-4.3.4-py37hefd8a0e_0
      markupsafe         pkgs/main/linux-64::markupsafe-1.1.1-py37h7b6447c_0
      matplotlib         pkgs/main/linux-64::matplotlib-3.0.2-py37h5429711_0
      mkl                pkgs/main/linux-64::mkl-2019.4-243
      mkl-service        pkgs/main/linux-64::mkl-service-2.0.2-py37h7b6447c_0
      mkl_fft            pkgs/main/linux-64::mkl_fft-1.0.14-py37ha843d7b_0
      mkl_random         pkgs/main/linux-64::mkl_random-1.0.2-py37hd81dba3_0
      more-itertools     pkgs/main/linux-64::more-itertools-7.2.0-py37_0
      mss                conda-forge/linux-64::mss-1.8.2-py37_1
      ncurses            pkgs/main/linux-64::ncurses-6.1-he6710b0_1
      netcdf4            pkgs/main/linux-64::netcdf4-1.4.2-py37h4b4f87f_0
      numpy              pkgs/main/linux-64::numpy-1.16.4-py37h7e9f1db_0
      numpy-base         pkgs/main/linux-64::numpy-base-1.16.4-py37hde5b4d6_0
      olefile            pkgs/main/linux-64::olefile-0.46-py37_0
      openssl            pkgs/main/linux-64::openssl-1.0.2s-h7b6447c_0
      orderedmultidict   pkgs/main/linux-64::orderedmultidict-1.0.1-py37_0
      owslib             pkgs/main/noarch::owslib-0.18.0-py_0
      packaging          pkgs/main/linux-64::packaging-19.1-py37_0
      paramiko           pkgs/main/linux-64::paramiko-2.4.2-py37_0
      pcre               pkgs/main/linux-64::pcre-8.43-he6710b0_0
      pillow             pkgs/main/linux-64::pillow-5.4.1-py37h34e0f95_0
      pip                pkgs/main/linux-64::pip-19.1.1-py37_0
      pluggy             pkgs/main/noarch::pluggy-0.12.0-py_0
      proj4              pkgs/main/linux-64::proj4-5.2.0-he6710b0_1
      psutil             pkgs/main/linux-64::psutil-5.6.3-py37h7b6447c_0
      py                 pkgs/main/linux-64::py-1.8.0-py37_0
      pyasn1             pkgs/main/noarch::pyasn1-0.4.6-py_0
      pycparser          pkgs/main/linux-64::pycparser-2.19-py37_0
      pynacl             pkgs/main/linux-64::pynacl-1.3.0-py37h7b6447c_0
      pyopenssl          pkgs/main/linux-64::pyopenssl-19.0.0-py37_0
      pyparsing          pkgs/main/noarch::pyparsing-2.4.2-py_0
      pyproj             pkgs/main/linux-64::pyproj-1.9.6-py37h14380d9_0
      pyqt               pkgs/main/linux-64::pyqt-5.9.2-py37h05f1152_2
      pyshp              pkgs/main/noarch::pyshp-2.1.0-py_0
      pysocks            pkgs/main/linux-64::pysocks-1.7.0-py37_0
      pytest             pkgs/main/linux-64::pytest-5.0.1-py37_0
      pytest-arraydiff   pkgs/main/linux-64::pytest-arraydiff-0.3-py37h39e3cac_0
      pytest-astropy     pkgs/main/linux-64::pytest-astropy-0.5.0-py37_0
      pytest-doctestplus pkgs/main/linux-64::pytest-doctestplus-0.3.0-py37_0
      pytest-openfiles   pkgs/main/linux-64::pytest-openfiles-0.3.2-py37_0
      pytest-remotedata  pkgs/main/linux-64::pytest-remotedata-0.3.2-py37_0
      python             pkgs/main/linux-64::python-3.7.0-h6e4f718_3
      python-dateutil    pkgs/main/linux-64::python-dateutil-2.8.0-py37_0
      pytz               pkgs/main/noarch::pytz-2019.2-py_0
      qt                 pkgs/main/linux-64::qt-5.9.6-h8703b6f_2
      readline           pkgs/main/linux-64::readline-7.0-h7b6447c_5
      requests           pkgs/main/linux-64::requests-2.22.0-py37_0
      scipy              pkgs/main/linux-64::scipy-1.3.0-py37h7c811a0_0
      setuptools         pkgs/main/linux-64::setuptools-41.0.1-py37_0
      sgp4               conda-forge/noarch::sgp4-1.4-pyh24bf2e0_3
      sip                pkgs/main/linux-64::sip-4.19.8-py37hf484d3e_0
      six                pkgs/main/linux-64::six-1.12.0-py37_0
      skyfield           conda-forge/noarch::skyfield-1.11-py_0
      soupsieve          pkgs/main/linux-64::soupsieve-1.9.2-py37_0
      sqlite             pkgs/main/linux-64::sqlite-3.29.0-h7b6447c_0
      tk                 pkgs/main/linux-64::tk-8.6.8-hbc83047_0
      tornado            pkgs/main/linux-64::tornado-6.0.3-py37h7b6447c_0
      unicodecsv         pkgs/main/linux-64::unicodecsv-0.14.1-py37_0
      urllib3            pkgs/main/linux-64::urllib3-1.24.2-py37_0
      wcwidth            pkgs/main/linux-64::wcwidth-0.1.7-py37_0
      webdavclient2      conda-forge/noarch::webdavclient2-0.1.1-py_0
      webencodings       pkgs/main/linux-64::webencodings-0.5.1-py37_1
      werkzeug           pkgs/main/noarch::werkzeug-0.15.4-py_0
      wheel              pkgs/main/linux-64::wheel-0.33.4-py37_0
      xz                 pkgs/main/linux-64::xz-5.2.4-h14c3975_4
      zipp               pkgs/main/noarch::zipp-0.5.2-py_0
      zlib               pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3
      zstd               pkgs/main/linux-64::zstd-1.3.7-h0b5b093_0
    
  2. Reimar Bauer

    The starting of the problems of PROJ_LIB was that a project tight to strong to an old version. I don’t want to do the same.

    What do you think about when we make it configurable? for the gui we could add it to the default settings and for the server to that aquivalent too. Then a user can overwrite it and we may get rid of all other related issues.

  3. Joern Ungermann reporter

    Thanks, the link clarifies the solution.

    Due to the number of client installations compared to servers, I worry more for the server, especially as I assume that most users use the link for starting, as it is much more convinient than the terminal due to the environment (i.e. mss is not per se in the path).

    This is complicated, let’s discuss this offline and note the resolution here.

  4. Joern Ungermann reporter

    Just to note, with your patch for mss works both with py36 and py37. py36 is for some reason the “automatic” outcome, but as it still works there, this shouldn’t be an issue for now.

  5. Log in to comment