2016-08-03 10 views
0

私はオープンソースのサードパーティ製ライブラリをジオプロセシング(OGRとShapely)で使用するPythonスクリプトを持っています。私の計画は、必要なライブラリをインストールすることなく、このスクリプトをコンピュータ上で実行することです。移植可能なpythonスクリプト:サードパーティのライブラリをスクリプトに含めることは可能ですか?

この目的で使用できるpy2exeなどのツールがあります。しかし、実行可能ファイルをコンパイルすることは私の最初の選択ではありません。そのようなファイルがかなり大きなサイズになる可能性があることに気付きました。また、別のスクリプト内でコードを使用したいと思います。したがって、実行に必要なサードパーティのメソッドが既に含まれている移植可能なPythonスクリプトを作成したいと考えています。

第三者のライブラリのインストールを避けるために、第三者のメソッドをPythonスクリプトに含めることは可能ですか?そうでない場合は、代わりに実行可能ファイルをコンパイルする以外に何ができますか?私はWindows OS上で動作します。

+0

スクリプトでライブラリファイルを配布しますか? –

+0

ドッカーコンテナを使用しますか? –

+0

これを行うことはお勧めできません。 1.これらのライブラリは他のライブラリに依存しており、コードとともに提供する必要がある膨大なライブラリのリストになります。 2.コードは、使用したライブラリの特定のバージョンにバインドされています。したがって、ライブラリが更新されると、コードのユーザはそれを利用することができなくなります。 3.独自のライブラリコードを提供しているので、ライブラリのバグの結果としてコード内のバグが発生した場合は、責任を負います。 – Munir

答えて

0

pipを使用してライブラリを書き出して、アプリケーションに組み込むことができます。

ピップホイールはホイールパッケージをインストールする必要があります。ホイールパッケージは、それが使用する "bdist_wheel" setuptools拡張機能を提供します。その後、あなたはローカルフォルダに車輪をダウンロードすることができ、それをクリーンアップする、この時点チェックrequirements.txtで

pip install wheel 
pip freeze > requirements.txt 

は、ローカルディレクトリへの要件とそのすべての依存関係のために車輪を構築するには

ちょうど(とないは、PyPIから)車輪のローカルディレクトリを使用して、これらの要件をインストールする
pip wheel --wheel-dir=/local/wheels -r requirements.txt 

そして:

pip install --no-index --find-links=/local/wheels -r requirements.txt 

その後、pythonが必要ですが、Pythonの最新バージョンに同梱されています。この

チェック:https://pip.readthedocs.io/en/latest/user_guide/#requirements-files

+0

私はこれが私の問題の最も便利な解決策であると思っています。実際のライブラリをインストールせずにサードパーティのメソッドをスクリプトに追加するのはあまり実用的ではありません。ローカルホイールは私のプロジェクトの良い選択肢です。このソリューションは、ソースファイルを自分のプロジェクトディレクトリにコピーするよりも優れています。 –

0

お使いのサードパーティ製のlibには、それが依存関係を持っているあなたは、ソースファイル(の.py)がプロジェクトフォルダに入れ得ることができます任意の依存関係を持っているし、インポートを使用してパッケージとしてそれを使用し、他にいない場合はあなたのプロジェクトのサイズはもっと良くなりますあなたのスクリプトのためのexeファイルを作成します。

+0

あなたの答えをありがとう。私はこれをテストし、2つのジオプロセシングライブラリのうちの1つで動作します。しかし、私は他のライブラリがなぜ問題を引き起こしたのかを調査しなかった(おそらくそれ以上の依存関係?)。そのような場合は、スクリプトと第三者のライブラリから実行可能ファイルをコンパイルするのが最善の方法です。同意する。 –

関連する問題