2015-04-17 79 views
3

我正在開發一個主要使用NumPy和一個SciPy模塊(scipy.optimize.fsolve)的小工具。我與其他人分享的想法是,它包含在可移植的Python中,因此理論上每個人都可以運行它。將單個SciPy模塊編譯爲* .pyd

整個SciPy包重很多(約80 mb)。是否有可能只將1個模塊編譯爲* .pyd並將其作爲任何其他模塊導入,以便我不必包含我實際上不需要的模塊?

回答

2

有幾種可能性,如果你想與您的代碼(尤其是scipy.optimize.fsolve)分配一個子集SciPy的代碼,

  1. 看那SciPy的源代碼,並僅複製所需要的文件fsolve功能。經過快速瀏覽,至少,scipy/optimize/optimize.py,scipy/optimize/minpack.py,scipy/optimize/_minpack.so/.pyd(但也許我錯過了一對夫婦)。
  2. 在簡單的方法,在SciPy的安裝目錄中刪除文件夾中的文件夾未使用的部分(尤其是那些佔用大量的空間),包括scipy/weavescipy/sparsescipy/linalg
  3. scipy.optimize.fsolve圍繞一個簡單的包裝和編譯與用Cython C代碼,這應該產生一個獨立的.pyd /。所以

應該有一個python模塊來自動做到這一點,例如pyinstaller確實包括僅在它產生的二進制可執行所需的模塊。所以你需要一個產生動態庫的等效的pyinstaller