Re: [mapserver-users] MapScript import errors (Module not found) in Python venv with global install

2022-04-28 Thread Seth G
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 "", line 1, in 
>   File "C:\QGIS\apps\Python39\lib\site-packages\mapscript\__init__.py", line 
> 2, in 
> from .mapscript import *
>   File "C:\QGIS\apps\Python39\lib\site-packages\mapscript\mapscript.py", line 
> 13, in 
> 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


[mapserver-users] MapScript import errors (Module not found) in Python venv with global install

2022-04-28 Thread maëlle lapriel
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 "", line 1, in 
  File "C:\QGIS\apps\Python39\lib\site-packages\mapscript\__init__.py",
line 2, in 
from .mapscript import *
  File "C:\QGIS\apps\Python39\lib\site-packages\mapscript\mapscript.py",
line 13, in 
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