python对应的岗位_隐式相对导入如何在Python中工作?
包是具有__init__.py文件的目錄,是,并且在模塊搜索路徑上找到時作為模塊加載.因此,如果父目錄位于模塊搜索路徑上,則pkg只是一個可以導入并視為包的包.
但是通過將pkg / core / main.py文件作為腳本運行,Python將pkg / core目錄添加到模塊搜索路徑,而不是pkg的父目錄.您現在在模塊搜索路徑上有一個__init__.py文件,但這不是定義包的內容.您只有一個__main__模塊,與其他任何東西都沒有包關系,您不能依賴隱式相對導入.
你有三個選擇:
>不要將包內的文件作為腳本運行.將一個腳本文件放在包外面,然后根據需要導入包.您可以將它放在pkg目錄旁邊,或者確保首先將pkg目錄安裝到模塊搜索路徑上已有的目錄中,或者讓腳本計算添加到sys.path的正確路徑.
>使用-m command line switch運行模塊,就像它是一個腳本一樣.如果使用python -m pkg.core,Python將查找__main__.py文件并將其作為腳本運行. -m開關將當前工作目錄添加到模塊搜索路徑中,因此當您在正確的工作目錄中時,可以使用該命令,一切都可以正常工作.或者將您的軟件包安裝在模塊搜索路徑上已有的目錄中.
>讓您的腳本將正確的目錄添加到模塊搜索路徑(基于os.path.absolute(__ file__)以獲取當前文件的路徑).考慮到您的腳本始終命名為__main__,導入pkg.core.main將添加第二個獨立的模塊對象;你有兩個獨立的命名空間.
我也強烈反對使用隱式相對導入.您可以通過添加具有相同名稱的嵌套包或模塊輕松地屏蔽頂級模塊和包.如果您嘗試在pkg包中使用導入時間,則會在標準庫時間模塊之前找到pkg / time.py.相反,使用顯式相對模塊引用的Python 3模型;從__future__ import absolute_import添加到您的所有文件,然后使用from. import< name>明確指出從哪里導入模塊.
總結
以上是生活随笔為你收集整理的python对应的岗位_隐式相对导入如何在Python中工作?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java基础知识总结(一)
- 下一篇: 高精度加减法 1000阶乘求法