Glad it's working for you, and good to know it can work alongside QGIS. The GISInternal Python MapScripts I think are built with SWIG 2.0, whereas I compiled those wheels with the latest version of SWIG 4.0.2/master build. That may explain why the GISInternals don't work with more recent Python versions.
Seth -- web:https://geographika.net twitter: @geographika On Mon, May 2, 2022, at 3:38 PM, maëlle lapriel wrote: > Hi Seth, > > It is working fine with Python 3.6 and the corresponding GISInternals build > until I try it in a venv, however it's not working on any other Python > version (and matching GISInternals) regardless of venv or not. Regarding venv > and env variables, it doesn't seem that anything gets wiped when activating a > venv. > > Interestingly, I got it working on all tested Python versions (3.6, 3.7, 3.9) > by installing MapScript using your wheels instead of using the MapScript that > ships with MapServer, both in venv and outside, and together with QGIS > loaded. I have no idea what exactly the difference is ultimately, but at > least I have a working environment now, so many thanks! > > On Fri, 29 Apr 2022 at 10:15, Seth G <se...@geographika.co.uk> wrote: >> __ >> Hi, >> >> As you wrote, the version of Python needs to match the version of Python >> used by GISInternals (which is different dependent on the package) e.g. >> https://www.gisinternals.com/packageinfo.php?file=release-1928-x64-gdal-3-4-2-mapserver-7-6-4.zip >> - "python - Python37-AMD64" >> >> Is everything working fine until you setup a virtual environment? This could >> be because activating a Python virtual environment on Windows seems to wipe >> out any previously set environment variables in the session. Try activating >> the virtual environment, and then running SDKShell.bat (or simply setting >> the environment variables you need from that file). >> >> SET PATH=C:\MapServer\bin;%PATH% >> SET PROJ_LIB=C:\MapServer\proj7\SHARE >> SET MAPSERVER_DLL_PATH=C:\MapServer\bin >> >> I have some experimental MapScript Wheels [1] built for various versions of >> Python with a recent MapServer development build, which could work with a >> release-1930-x64 development build [2]. >> >> Seth >> >> [1] https://github.com/geographika/python-mapscript/tree/main/wheels >> [2] >> https://www.gisinternals.com/query.html?content=filelist&file=release-1930-x64-gdal-mapserver.zip >> -- >> web:https://geographika.net >> twitter: @geographika >> >> >> On Fri, Apr 29, 2022, at 9:08 AM, maëlle lapriel wrote: >>> Hi Seth, >>> >>> I've considered this to be the problem, however I can rule out any >>> dependency conflicts already since I also tried to simply just get >>> MapScript running in a Python env without any other imports. >>> Am I assuming right that for just using MapScript alone, I can just run the >>> SDKShell.bat to have all the variables set, then take a Python version that >>> matches the GISInternals build and I'm good to go? Because that already >>> yields mentioned import errors, with every possible build or Python version >>> except 3.6 and MapServer 7.6.1, which also stops working as soon as I set >>> up a venv. >>> >>> Thank you very much for your help. >>> >>> Cheers >>> >>> On Thu, Apr 28, 2022, 18:25 Seth G <se...@geographika.co.uk> wrote: >>>> __ >>>> Hi Maëlle, >>>> >>>> MapScript (and MapServer) use many of the same dependent DLLs as QGIS - >>>> GDAL, Proj, GEOS etc. which would then get loaded into memory by Python. >>>> For everything to work correctly, all these dependencies would have to be >>>> the same version, and (I think this is still the case), compiled with the >>>> same version of Microsoft Visual C (the 1928, 1931 etc. use when naming >>>> the GISInternals zips). >>>> It probably would be possible to get everything build and working, but >>>> you'd likely have to compile everything yourself. >>>> Is it possible to modify your workflow so a PyQGIS environment dumps out >>>> data to disk and then a MapScript environment works on this data? >>>> I'd imagine PyQGIS can probably do everything MapScript can, except for >>>> manipulate Mapfiles - you could take a look at mappyfile for this, which >>>> is Python only has has no dependent DLLs. >>>> >>>> Seth >>>> >>>> -- >>>> web:https://geographika.net >>>> twitter: @geographika >>>> >>>> >>>> On Thu, Apr 28, 2022, at 11:42 AM, maëlle lapriel wrote: >>>>> I'm trying to write a PyQGIS standalone script which utilizes MapScript >>>>> for certain tasks. In a first attempt, I basically did this: >>>>> >>>>> - I installed MapScript globally with pip and using the Python 3.9.5 >>>>> interpreter which ships with QGIS 3.22.6 (also includes wheel) >>>>> - Created a venv with --system-site-packages >>>>> - Downloaded the appropriate Windows binary build of MapServer from >>>>> GISInternals (release-1928-x64-gdal-3-4-mapserver-7-6) and extracted into >>>>> C:\MapServer\ >>>>> - Set the MAPSERVER_DLL_PATH to C:\MapServer\bin >>>>> >>>>> However, whenever I try to load MapScript, it yields the following: >>>>> >>>>> Traceback (most recent call last): >>>>> File "<string>", line 1, in <module> >>>>> File "C:\QGIS\apps\Python39\lib\site-packages\mapscript\__init__.py", >>>>> line 2, in <module> >>>>> from .mapscript import * >>>>> File "C:\QGIS\apps\Python39\lib\site-packages\mapscript\mapscript.py", >>>>> line 13, in <module> >>>>> from . import _mapscript >>>>> ImportError: DLL load failed while importing _mapscript: The specified >>>>> module could not be found. >>>>> >>>>> As to where the README over at github indicates that this means >>>>> MapServer.dll can't be found. >>>>> >>>>> In order to rule out possible issues, I also tried the following: >>>>> >>>>> - Not creating a venv, but using it with the QGIS python version directly >>>>> - Installing MapScript into normal installations of python 3.7, 3.8, 3.9, >>>>> 3.10 >>>>> - Using it together with the latest builds of MapServer (1930) >>>>> - Not installing MapScript with pip but copying over mapscript.py and >>>>> _mapscript.pyd from the respective MapServer builds >>>>> - Adding C:\MapServer\bin to PATH instead of the new env variable >>>>> >>>>> All with the same result. The only ever combination I got it working is >>>>> when installing the MapScript globally using python3.6/pip and the old >>>>> MapServer release-1911 (7.6.1), where I sadly can't import PyQGIS in the >>>>> version I need. >>>>> >>>>> What could be the issue here? >>>>> >>>>> Kind regards, Maëlle >>>>> _______________________________________________ >>>>> MapServer-users mailing list >>>>> MapServer-users@lists.osgeo.org >>>>> https://lists.osgeo.org/mailman/listinfo/mapserver-users >>>>> >>>> >>
_______________________________________________ MapServer-users mailing list MapServer-users@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/mapserver-users