Wenn ich mein python3.8-Programm mit cx_freeze in eine msi einfriere, funktioniert die msi auf dem Computer, auf dem sie erstellt wurde, aber nicht auf anderen Hosts.
Die Fehlermeldung lautet: OSError: Could not find lib geos_c.dll or load any of its variants [].
Pipfile:
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[packages]
cx_Freeze = "==6.2"
shapely = "==1.7.1"
[requires]
python_version = "3.8"
[scripts]
build = "python setup.py bdist_msi"
setup.py:
from cx_Freeze import setup, Executable
if __name__ == "__main__":
APP = Executable(
script="test.py",
base=None,
targetName="test", # executable name avaiable in cli after installation
)
setup(
name="test",
options={
"build_exe": {},
"bdist_msi": {
"add_to_path": True,
"all_users": True, # require admin rights
},
},
executables=[APP],
)
test.py:
from shapely.geometry import LineString
pallet_line_string = LineString(
[
(0, 0),
(10, 0),
(10, 20),
(0, 20),
(0, 0),
]
)
print(pallet_line_string)
Windows 10
1.7.1 von PyPI mit pipenv installiert
@ypicard Es tut mir leid wegen der Probleme, aber das ist kein formschönes Problem. Sie müssen herausfinden, wie Sie eine kompatible geos_c.dll in Ihr Paket aufnehmen können. So machen wir es für formschöne Räder, die auf Appveyor basieren: https://github.com/Toblerity/Shapely/blob/maint-1.7/appveyor.yml#L84.
Die Sache ist, dass die DLLs bereits korrekt gepackt sind. Ich finde sie im Installationsverzeichnis meines Programms ( C:\Program Files (x86)\my_program\lib\shapely\DLLs
). Sie scheinen richtig gebündelt zu sein.
Das Problem ist, dass Shapely sie nicht richtig laden kann. Ich habe den Pfad bei geos.py:166
gedruckt und sowohl egg_dlls
als auch wininst_dlls
sehen korrekt aus.
Was ist los ?
Die Fehlermeldung war irreführend: Das geos_c.dll
wurde tatsächlich gefunden, aber seine Abhängigkeiten sind wir nicht. Ich musste Microsofts VC Redistributables installieren, damit es funktioniert.
Danke!
Hilfreichster Kommentar
Die Fehlermeldung war irreführend: Das
geos_c.dll
wurde tatsächlich gefunden, aber seine Abhängigkeiten sind wir nicht. Ich musste Microsofts VC Redistributables installieren, damit es funktioniert.Danke!