作者wallrose (牆玫瑰)
看板Python
標題[問題] 關於import
時間Thu Jun 20 11:27:07 2019
有些package有這種情況:
from A import B => OK
import A
A.B => AttributeError
舉個實例:
[ex1]
from scipy import linalg => OK
--------------------
import scipy
scipy.linalg => AttributeError
[ex2]
from sklearn import model_selection => OK
-------------------------------
import sklearn
sklearn.model_selection => AttributeError
請問這是bug還是故意這樣設計??
這樣設計的用意是???
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.237.28 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1561001229.A.C93.html
1F:推 as30385438: 你舉的例子import的都是subpackage,只有module才能 06/20 11:35
2F:推 bugbug777: 你分的清楚 套件 跟 模組的差別嗎? 06/20 11:35
3F:→ as30385438: 被斷了QQ,你懂我的意思就好 06/20 11:36
謝謝回覆
module是一個py檔,
package是一個folder裡面有很多模組??
但我實際去看scipy的__init__.py
有這麼一段:
# Remove the linalg imported from numpy so that the scipy.
# linalg package can be imported.
del linalg
__all__.remove('linalg')
感覺是原本可以,
但刻意不讓你這麼做的,不是很明白
※ 編輯: wallrose (223.136.237.28 臺灣), 06/20/2019 12:16:06
4F:→ as30385438: 如註解所寫,只是先移掉numpy.linalg而已 06/20 13:05
5F:推 yushes920179: 去看一下什麼是attribute 06/21 01:57
6F:→ ssivart: 關鍵在於namespace 07/04 00:46