衝擊年薪50w,助你高階python工程師》
包中的__init__.py檔案
1、python的每個模組的包中,包含乙個__init__.py檔案,有了這個檔案,才能匯入目錄下的module。
2、__init__.py為空時,使用from *** import *從該包匯入時,雖然正常工作,但是沒有匯入任何內容。
3、可以在__init__.py中匯入其它包或模組,這樣當引入該包時,__init__.py執行,自動匯入這些模組。
如__init__.py內容為:
import aa
import bb
使用時,from *** import *,將自動匯入aa和bb。
4、__init__.py中有乙個特殊變數__all__,定義乙個列表,當使用from *** import *時,將自動匯入所有__all__中列出的子包或子模組。
如:__all__ = ['cc','dd']
from *** import *將自動匯入cc和dd。
import格式
1、import *** /import packagename.*** /import package1.package2.***
每級package目錄中都需要__init__.py。
3、from packagename import ***/from package1.package2 import ***
4、from packagename import */from package1.package2 import *
*只用放在有from的匯入的import後面。
import */from package1 import package2.*,格式都是不正確的。
絕對路徑與相對路徑
1、absolute import
相對於sys.path中定義的路徑。
2、relative import
import ***/import package1.***
從語句上,看不出來是sys.path下的模組,還是當前包下的模組。relative import不建議使用。
可以在檔案中加入from __future__ import absolute_import禁止relative import。這樣會認為import ***/import package1.***都是absolute import,相對於sys.path中的路徑。
3、explicit relative import
from . import ***/from .package1 import ***/from ..package1 import ***
用乙個點表示當前package中進行查詢,兩個點表示上一層package中進行查詢。
注意事項:
python中只能在模組中使用relative import,而不能在應用程式中使用relative import。應用程式必需使用absolute import,而package中可以使用相對匯入。
explicit relative import 使用模組的名字確定模組在包中的位置,入口檔案模組名字總是__main__。在package中使用relative import時,一定不能引用到入口檔案所在的那一層目錄。
如:main.py
|___________core
| |____________sunny.py
| |____________ __init__.py
|___________effect
| |____________windy.py
| |____________ __init__.py
|________________________ __init__.py
在sunny.py中使用from ..effect import windy,因為 .. 運算子進入上一層的package, 然後發現入口檔案就在這一層,所以不會把這一層當作乙個package, 這樣就會出現 下面的錯誤:
valueerror: attempted relative import beyond toplevel package。
python包管理 關於python包管理
有著41個物件 檔案或者資料夾 1 其中linester 1.0.0 py2.7.egg info檔案 是安裝mynester跟yournester的資訊總結,他們使用了python setup.py install 的安裝方式。學會使用distutils發布包,見文章 但是在linester 1....
GO中的包管理
我們知道,程式是可以通過封裝來提高 的復用性。那麼go就是可以通過包管理的機制來管理 go modules於go語言1.11版本時引入,在1.12版本正式支援,是由go語言官方提供的包管理解決方案。modules是相關go包的集合,是源 交換和版本控制的單元。go命令直接支援使用modules,包括...
python的包管理方式
模組包 包通常總是乙個目錄,目錄下為首的乙個檔案便是 init py。然後是一些模組檔案和子目錄,假如子目錄中也有 init py 那麼它就是這個包的子包了。差不多就像這樣吧 假定我們的包的例子有如下的目錄結構 phone init py common util.py voicedta init p...