Shapely: pipenvおよびcx_freezeと一緒にパッケージ化できません:OSError:lib geos_c.dllが見つからないか、そのバリアントのいずれかをロードできませんでした[]

作成日 2020年09月16日  ·  3コメント  ·  ソース: Toblerity/Shapely

期待される動作と実際の動作。

cx_freezeを使用してpython3.8プログラムをmsiにフリーズすると、msiはそれが構築されたコンピューターで機能しますが、他のホストでは機能しません。
エラーメッセージは次のとおりです: 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)

オペレーティング・システム

ウィンドウズ10

形の良いバージョンと来歴

1.7.1は、pipenvを使用してPyPIからインストールされます

invalid

最も参考になるコメント

エラーメッセージは誤解を招くものでしたgeos_c.dllは実際に見つかりましたが、依存関係ではありません。 動作させるには、MicrosoftのVC再頒布可能パッケージをインストールする必要がありました。
ありがとう!

全てのコメント3件

@ypicardトラブルについて申し訳ありませんが、これは形の良い問題ではありません。 互換性のあるgeos_c.dllをバンドルに含める方法を検討する必要があります。 これが、appveyor上に構築されたシェイプのあるホイールに対して行う方法です: https://github.com/Toblerity/Shapely/blob/maint-1.7/appveyor.yml#L84。

問題は、dllがすでに正しくパッケージ化されているということです。 それらは私のプログラムのインストールディレクトリ( C:\Program Files (x86)\my_program\lib\shapely\DLLs )にあります。 それらは正しくバンドルされているようです。
問題は、それらを正しくロードできないことです。 パスをgeos.py:166で印刷しましたが、 egg_dllswininst_dllsの両方が正しく表示されます。
何が起こっている ?

エラーメッセージは誤解を招くものでしたgeos_c.dllは実際に見つかりましたが、依存関係ではありません。 動作させるには、MicrosoftのVC再頒布可能パッケージをインストールする必要がありました。
ありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価