Я провел большую часть дня, пытаясь скомпилировать exe-файл из моего скрипта python и запустить его через командную строку vanilla cmd.Мне наконец-то удалось создать exe-файл, но странно, он запускается только в приглашении anaconda, а не в cmd.
Вот полное сообщение об ошибке / traceback:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
module.run()
File "C:\ProgramData\Anaconda3\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run
exec(code, m.__dict__)
File "generateKonsekvens.py", line 1, in <module>
File "C:\ProgramData\Anaconda3\lib\site-packages\geopandas\__init__.py", line 1, in <module>
from geopandas.geoseries import GeoSeries
File "C:\ProgramData\Anaconda3\lib\site-packages\geopandas\geoseries.py", line 7, in <module>
from shapely.geometry import shape, Point
File "C:\ProgramData\Anaconda3\lib\site-packages\shapely\geometry\__init__.py", line 4, in <module>
from .base import CAP_STYLE, JOIN_STYLE
File "C:\ProgramData\Anaconda3\lib\site-packages\shapely\geometry\base.py", line 17, in <module>
from shapely.coords import CoordinateSequence
File "C:\ProgramData\Anaconda3\lib\site-packages\shapely\coords.py", line 8, in <module>
from shapely.geos import lgeos
File "C:\ProgramData\Anaconda3\lib\site-packages\shapely\geos.py", line 130, in <module>
os.path.join(sys.prefix, "Library", "lib", "geos_c.dll"),
File "C:\ProgramData\Anaconda3\lib\site-packages\shapely\geos.py", line 56, in load_dll
libname, fallbacks or []))
OSError: Could not find lib geos_c.dll or load any of its variants ['Library\\lib\\geos_c.dll'].
КакВы можете видеть, что он ищет что-то в папке anaconda, что не позволяет заморозить скрипт.Файл geos_c.dll принадлежит fiona / shapely, которые в данном случае являются зависимостями модуля геопанда.Файл geos_c.dll находится в скомпилированной папке (lib / shapely).
Сценарий прекрасно работает в обычной командной строке, используя
python generateKonsekvens.py
в папке.
Что вызывает это и как я могу это исправить?
Python 3.6.3, Windows 10 64 бит.
ОБНОВЛЕНИЕ
Я попробовал предложенияJPEG, и ни один из них не работал (не удалось найти DLL в этих местах).Я попробовал adhoc-решение для ручного копирования dll в Library/lib/geos_c.dll
, которое скопировало некоторые файлы, но выдает ту же ошибку.Затем я попытался с build_exe_options = {'include_files': [(os.path.join(sys.prefix, "Library", "bin", "geos_c.dll"), os.path.join("Library", "bin", "geos_c.dll"))]}
, который находит файл geos_c.dll
в каталоге anaconda.Я также упаковал его через Windows CMD на этот раз, и DLL включены.Ошибка, однако, остается той же самой ... Сейчас я попробую с новым, свежим conda anaconda venv, но любые другие идеи пока приветствуются.