@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.
No description provided.
@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.
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:
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
addresses #369 : remove enpt_enmapboxapp from the requirements.txt as it is neither available in PIP, nor in a public repository that does not need access rights
Signed-off-by: Benjamin Jakimow benjamin.jakimow@geo.hu-berlin.de benjamin.jakimow@geo.hu-berlin.de
→ <<cset 04f7e780bd7f>>
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.
waiting for enpt_enmapboxapp PIP release...
Here you go: https://pypi.org/project/enpt-enmapboxapp/
@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>
This should be fixed now in version 0.4.3.
addresses #369
enmapbox/apps/enpt_app/init.py - catches ModuleNotFoundError
→ <<cset 856c9da20800>>
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):
dependencycheck.py
- added mapping between EnPT pip name and python name ('enpt-enmapboxapp': 'enpt_enmapboxapp')
- closes #369
→ <<cset ca96a154b9fc>>
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>>
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