我开发了一个需要 Shapely python 库的小应用程序。我通过 .exe 文件将它安装在 Windows 上,因此它会自动将必要的 DLL 文件(geos.dll、geos_c.dll)放在 Python27\Lib\site-packages\shapely\DLLs 中。
当我试图在我的盒子上创建一个 virtualenv 时,我通过 pip 进行了安装,但它没有放置那些 DLL 文件,所以我收到了这个错误:
from shapely.geos import lgeos
File "...\lib\site-packages\shapely\geos.py", line 71, in <module>
_lgeos = CDLL("geos.dll")
File "C:\Python27\Lib\ctypes\__init__.py", line 353, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] The specified module could not be found
所以我手动替换了 virtualenv\Lib\site-packages\shapely\DLLs 文件夹中的这 2 个 DLL 文件,并且它起作用了。
现在我正在尝试在 heroku 上部署应用程序,但由于以下错误再次失败:
from shapely.geos import lgeos
_lgeos = load_dll('geos_c', fallbacks=['libgeos_c.so.1', 'libgeos_c.so'])
file "/app/.heroku/python/lib/python2.7/site-packages/shapely/geos.py", line 44, in load_dll
from shapely.coords import required
file "/app/.heroku/python/lib/python2.7/site-packages/shapely/geos.py", line 47, in <module>
libname, fallbacks or []))
Error: Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so']
Process exited with status 1
State changed from starting to crashed
所以我认为它崩溃是因为那 2 个 DLL 文件不存在。我将这两个文件复制到一个单独的文件夹中并通过 git 推送它们
我在我的应用程序根目录中创建了一个 .profile 文件,以将这两个文件复制到 python 环境
。轮廓
#Copy Shapely DLL Files to Site packages
cp -r $HOME/env_files/DLLs $HOME/.heroku/python/lib/python2.7/site-packages/shapely/
但该应用程序仍然因相同的错误而崩溃。
谁能帮我解决这个问题?