![](/img/trans.png)
[英]Python - package can not import subpackages when installed with setup.py
[英]Can there be setup.py files for python subpackages?
我看到scipy在其子包中有setup.py文件。 這些setup.py文件有什么作用? 它是用於構建子包嗎?
是否有任何文檔或網頁可以解釋這個或者像教程一樣?
一般來說,您不需要任何其他設置腳本來構建分發。 SciPy需要額外的設置腳本,主要是為了減少特定於子包的樣板配置代碼的數量。 SciPy子包中的設置腳本主要用於構建整個分發時的配置准備 - 構建和打包仍然是從根設置腳本完成的。 如NumPy Distutils - 用戶指南中所述 :
SciPy包的要求
SciPy由Python包組成,稱為SciPy包,Python用戶可以通過
scipy
命名空間使用它們。 每個SciPy包都可能包含其他SciPy包。 等等。 因此,SciPy目錄樹是具有任意深度和寬度的包樹。 任何SciPy包都可能依賴於NumPy包,但對其他SciPy包的依賴應保持最小或為零。除了源代碼之外,SciPy包還包含以下文件和目錄:
setup.py
---構建腳本__init__.py
---包初始化程序tests/
--- unittests目錄它們的內容如下所述。
setup.py
文件為了向SciPy添加Python包,其構建腳本(
setup.py
)必須滿足某些要求。 最重要的要求是包定義了一個configuration(parent_package='',top_path=None)
函數,它返回一個適合傳遞給numpy.distutils.core.setup(..)
的字典。 為簡化此字典的構造,numpy.distutils.misc_util
提供了Configuration
類,如下所述。SciPy純Python包示例
下面是純SciPy包的最小
setup.py
文件的示例#!/usr/bin/env python def configuration(parent_package='',top_path=None): from numpy.distutils.misc_util import Configuration config = Configuration('mypackage',parent_package,top_path) return config if __name__ == "__main__": from numpy.distutils.core import setup #setup(**configuration(top_path='').todict()) setup(configuration=configuration)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.