3

主に NumPy と 1 つの SciPy モジュール (scipy.optimize.fsolve) を使用する小さなツールを開発しています。他の人と共有するという私の考えは、理論的には誰もが実行できるように、Portable Python と一緒にパッケージ化されているということです。

SciPy パッケージ全体は非常に重くなります (約 80 MB)。実際には必要のないモジュールを含める必要がないように、1 つのモジュールのみを *.pyd にコンパイルし、それを他のモジュールとしてインポートすることは可能ですか?

4

1 に答える 1

2

scipy.optimize.fsolveSciPy コードのサブセットのみをコード (特に)と共に配布したい場合、いくつかの可能性があります。

  1. SciPy ソース コードを見て、関数に必要なファイルのみをコピーしますfsolve。ざっと見ただけで、少なくともscipy/optimize/optimize.py、、、scipy/optimize/minpack.pyscipy/optimize/_minpack.so/.pydしかし、いくつか見逃したかもしれません)。
  2. より簡単なアプローチでは、 、などを含むscipy/weave、scipy インストール ディレクトリ内の未使用部分 (特に多くのスペースを必要とする部分) をフォルダーごとに削除します。scipy/sparsescipy/linalg
  3. の周りに単純なラッパーを書き、 scipy.optimize.fsolveそれを cython で C コードにコンパイルします。これにより、独立した .pyd/.so が生成されます。

これを自動的に行うには、python モジュールが必要です。たとえば、pyinstaller生成されるバイナリ実行可能ファイルに必要なモジュールのみが含まれます。pyinstallerしたがって、動的ライブラリを生成するのと同等のものが必要になります。

于 2015-04-17T12:08:14.563 に答える