Include EnPT App from GFZ

Issue #369 closed
Andreas Janz created an issue

No description provided.

Official response

  • Benjamin Jakimow

    The PIP package installer allows to install the enpt_enmapboxapp using:

    git+https://gitext.gfz-potsdam.de/EnMAP/GFZ_Tools_EnMAP_BOX/enpt_enmapboxapp.git

    , but this requires access to the repo. As long as enpt_enmapboxapp is not listed as offical PIP package or hidden in a private repo I’ll remove it from the requirements.txt @Andreas Janz @Fabian Thiel

Comments (15)

  1. Andreas Janz reporter

    @Benjamin Jakimow I would not include Daniels PIP dependency into the EnMAP-Box requirments.txt!

    If Daniel insists we simply ship his package via our enmap-box/site-packages folder.

  2. Benjamin Jakimow

    I’d rather see the site-package folder removed, actually we don’t need it anymore. EnMAP-Box Users are warned in case of missing requirements, but still can use parts which do not require the missing package(s) (as described in #366).

    The preferred way to contribute own EnMAPBoxApplications/ EnMAP-Box code should be using Pull Request, as already [described here](https://enmap-box.readthedocs.io/en/latest/general/contribute.html#provide-source-code). This ensures code integrity, e.g. because the versioning allows to track which developer provided which parts of source code. Not implemented yet (#370), PRs might ensure that external contributions pass our unit tests.

    Also it doesn’t make any sense to me (see below, problems with PIP), I don’t see a problem with external apps being distributed via pip. If external developers feel more comfortable with that instead of creating PRs, it’s fine for me. It’s far more easy to communicate and fix problems, instead of us being responsible to solve issues in the EnMAP-Box repo first and propagate them back into the external developers repository.

    Problems with pip
    1. the pip installation will not be updated with the EnMAP-Box plugin,

    2. it requires root rights to install pip packages or at least to communicate the pip -u options, while QGIS users can install his preferred set of plugins on their own and without root access,

    3. pip packages are not disable/removed when disabling/removing the EnMAP-Box plugin)

    4. why to distribute an application that depends on PyQGIS via pip, while pip cannot be used to install PyQGIS?

    Otherwise a combination of QGIS Plugin code and pip is known e.g. from the QGIS Plugin Builder Plugin, that allows to create a plugin template (without any pip pacakge dependency), but refers to the pb_tool package for compilation and deployment:

  3. Benjamin Jakimow

    The PIP package installer allows to install the enpt_enmapboxapp using:

    git+https://gitext.gfz-potsdam.de/EnMAP/GFZ_Tools_EnMAP_BOX/enpt_enmapboxapp.git

    , but this requires access to the repo. As long as enpt_enmapboxapp is not listed as offical PIP package or hidden in a private repo I’ll remove it from the requirements.txt @Andreas Janz @Fabian Thiel

  4. Daniel Scheffler

    I agree, remove it as long at the package is not public. We still need some signatures to be able to make it public but this should not take too long anymore. As soon as the package is public, I will also push it to PyPi so that it is installable via PIP.

  5. Andreas Janz reporter

    @Daniel Scheffler I was not able to install your package on my Windows 10 system

    (ee) C:\Users\janzandr>pip install enpt-enmapboxapp
    Collecting enpt-enmapboxapp
      Using cached enpt_enmapboxapp-0.4.2.tar.gz (625 kB)
    Requirement already satisfied: psutil in c:\users\janzandr\appdata\roaming\python\python38\site-packages (from enpt-enmapboxapp) (5.7.0)
    Building wheels for collected packages: enpt-enmapboxapp
      Building wheel for enpt-enmapboxapp (setup.py) ... error
      ERROR: Command errored out with exit status 1:
       command: 'C:\miniconda\envs\ee\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\janzandr\\AppData\\Local\\Temp\\pip-install-xez10aij\\enpt-enmapboxapp\\setup.py'"'"'; __file__='"'"'C:\\Users\\janzandr\\AppData\\Local\\Temp\\pip-install-xez10aij\\enpt-enmapboxapp\\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 'C:\Users\janzandr\AppData\Local\Temp\pip-wheel-6jj3dmcs'
           cwd: C:\Users\janzandr\AppData\Local\Temp\pip-install-xez10aij\enpt-enmapboxapp\
      Complete output (24 lines):
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build\lib
      creating build\lib\enpt_enmapboxapp
      copying enpt_enmapboxapp\enpt_enmapboxapp.py -> build\lib\enpt_enmapboxapp
      copying enpt_enmapboxapp\version.py -> build\lib\enpt_enmapboxapp
      copying enpt_enmapboxapp\__init__.py -> build\lib\enpt_enmapboxapp
      running egg_info
      writing enpt_enmapboxapp.egg-info\PKG-INFO
      writing dependency_links to enpt_enmapboxapp.egg-info\dependency_links.txt
      writing requirements to enpt_enmapboxapp.egg-info\requires.txt
      writing top-level names to enpt_enmapboxapp.egg-info\top_level.txt
      reading manifest file 'enpt_enmapboxapp.egg-info\SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files matching '__pycache__' found under directory '*'
      warning: no previously-included files matching '*.py[co]' found under directory '*'
      warning: no files found matching '*.jpg' under directory 'docs'
      warning: no files found matching '*.gif' under directory 'docs'
      writing manifest file 'enpt_enmapboxapp.egg-info\SOURCES.txt'
      running build_scripts
      creating build\scripts-3.8
      error: [Errno 2] No such file or directory: 'bin\\enpt_run_cmd.bat'
      ----------------------------------------
      ERROR: Failed building wheel for enpt-enmapboxapp
      Running setup.py clean for enpt-enmapboxapp
    Failed to build enpt-enmapboxapp
    Installing collected packages: enpt-enmapboxapp
        Running setup.py install for enpt-enmapboxapp ... error
        ERROR: Command errored out with exit status 1:
         command: 'C:\miniconda\envs\ee\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\janzandr\\AppData\\Local\\Temp\\pip-install-xez10aij\\enpt-enmapboxapp\\setup.py'"'"'; __file__='"'"'C:\\Users\\janzandr\\AppData\\Local\\Temp\\pip-install-xez10aij\\enpt-enmapboxapp\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\janzandr\AppData\Local\Temp\pip-record-8ie572le\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\miniconda\envs\ee\Include\enpt-enmapboxapp'
             cwd: C:\Users\janzandr\AppData\Local\Temp\pip-install-xez10aij\enpt-enmapboxapp\
        Complete output (24 lines):
        running install
        running build
        running build_py
        creating build
        creating build\lib
        creating build\lib\enpt_enmapboxapp
        copying enpt_enmapboxapp\enpt_enmapboxapp.py -> build\lib\enpt_enmapboxapp
        copying enpt_enmapboxapp\version.py -> build\lib\enpt_enmapboxapp
        copying enpt_enmapboxapp\__init__.py -> build\lib\enpt_enmapboxapp
        running egg_info
        writing enpt_enmapboxapp.egg-info\PKG-INFO
        writing dependency_links to enpt_enmapboxapp.egg-info\dependency_links.txt
        writing requirements to enpt_enmapboxapp.egg-info\requires.txt
        writing top-level names to enpt_enmapboxapp.egg-info\top_level.txt
        reading manifest file 'enpt_enmapboxapp.egg-info\SOURCES.txt'
        reading manifest template 'MANIFEST.in'
        warning: no previously-included files matching '__pycache__' found under directory '*'
        warning: no previously-included files matching '*.py[co]' found under directory '*'
        warning: no files found matching '*.jpg' under directory 'docs'
        warning: no files found matching '*.gif' under directory 'docs'
        writing manifest file 'enpt_enmapboxapp.egg-info\SOURCES.txt'
        running build_scripts
        creating build\scripts-3.8
        error: file 'C:\Users\janzandr\AppData\Local\Temp\pip-install-xez10aij\enpt-enmapboxapp\bin\enpt_run_cmd.bat' does not exist
        ----------------------------------------
    ERROR: Command errored out with exit status 1: 'C:\miniconda\envs\ee\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\janzandr\\AppData\\Local\\Temp\\pip-install-xez10aij\\enpt-enmapboxapp\\setup.py'"'"'; __file__='"'"'C:\\Users\\janzandr\\AppData\\Local\\Temp\\pip-install-xez10aij\\enpt-enmapboxapp\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\janzandr\AppData\Local\Temp\pip-record-8ie572le\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\miniconda\envs\ee\Include\enpt-enmapboxapp' Check the logs for full command output.
    
    (ee) C:\Users\janzandr>
    

  6. Benjamin Jakimow

    I added enpt-enmapboxapp to the requirements.txt and could install it with the EnMAP-Box pip installer

    Install enpt_enmapboxapp
    "pip install --user enpt-enmapboxapp"
    
    Collecting enpt-enmapboxapp
      Downloading enpt_enmapboxapp-0.4.3.tar.gz (625 kB)
    Requirement already satisfied: psutil in d:\miniconda3\envs\qgis_stable\lib\site-packages (from enpt-enmapboxapp) (5.7.0)
    Building wheels for collected packages: enpt-enmapboxapp
      Building wheel for enpt-enmapboxapp (setup.py): started
      Building wheel for enpt-enmapboxapp (setup.py): finished with status 'done'
      Created wheel for enpt-enmapboxapp: filename=enpt_enmapboxapp-0.4.3-py2.py3-none-any.whl size=14278 sha256=ae49952ee54f1d4721a2b8157fdf254b85151634a32f69087956b3848a67fd27
      Stored in directory: c:\users\geo_beja\appdata\local\pip\cache\wheels\99\06\f9\dceeaa78b5e96fec3f11c0293283b143337efae83aff5f82c7
    Successfully built enpt-enmapboxapp
    Installing collected packages: enpt-enmapboxapp
    Successfully installed enpt-enmapboxapp-0.4.3
    
    
    D:\miniconda3\envs\qgis_stable\lib\site-packages\pip\_vendor\pyparsing.py:857: ResourceWarning: unclosed <socket.socket fd=3200, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 59358), raddr=('127.0.0.1', 59347)>
      otherdictitems = [(k, _ParseResultsWithOffset(v[0], addoffset(v[1])))
    D:\miniconda3\envs\qgis_stable\lib\site-packages\pip\_vendor\pyparsing.py:1641: ResourceWarning: unclosed <socket.socket fd=3200, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 59361), raddr=('127.0.0.1', 59347)>
      def _parseNoCache(self, instring, loc, doActions=True, callPreParse=True):
    

  7. Benjamin Jakimow

    enmapboxgui.py - added EnMAPBox.addMessageBarTextBoxItem() to show longer messages via message bar and extra text box - errors that occur during inital loading of EnMAPBoxApplications are collected and shown in the message bar - problems when loading EnMAPBoxProcessingProvider are shown in QGIS Message Bar

    apps/enpt_app: - removed try-catch, as errors are collected and shown after EnMAP-Box startup (addresses #369)

    → <<cset b027aeea6926>>

  8. Log in to comment