4

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ファイルが存在しないためにクラッシュすると想定しました。これら2つのファイルを別のフォルダーにコピーし、git経由でプッシュしました

これらの 2 つのファイルを Python 環境にコピーするために、アプリのルートに .profile ファイルを作成しました。

。プロフィール

#Copy Shapely DLL Files to Site packages
cp -r $HOME/env_files/DLLs $HOME/.heroku/python/lib/python2.7/site-packages/shapely/

それでもアプリは同じエラーでクラッシュします。

誰でもこれで私を助けることができますか?

4

1 に答える 1

0

Heroku は *nix システムを使用しています - *.dllではなく* .so タイプ ライブラリで動作します。

そのため、ENV 変数と dll をすべて削除します。

pip経由でインストールします

pip install shapely

githubからのインストールに失敗しました

于 2013-03-19T10:34:00.707 に答える