簡體   English   中英

如何在python2中執行顯式相對導入?

[英]how to perform explicit relative import in python2?

我的隊友在代碼庫中添加了明確的相對導入。

from .modulename import classname

現在,如果我嘗試運行該文件,我會得到“嘗試在非包中導入相對導入”錯誤?

我試圖在Python2中運行它,他進行了這個更改,使這個文件與Python3兼容。 目前,我必須在Python2中運行此文件

我嘗試運行的文件和它嘗試導入的文件位於同一目錄中,該目錄是我嘗試啟動此文件的目錄。

顯式相對導入在Python 2和Python 3中的工作方式完全相同。問題是你們中的一個人錯誤地運行了代碼 - 可能是你們,盡管這里沒有足夠的信息可以確定。

如果這個文件應該是一個包的一部分,那么你就錯了。 應該直接通過文件名運行它,並且在運行它時不應該在包目錄中。 實際上,您很可能根本不應該運行它,只從其他文件導入它。 如果你想要運行它,那么命令就是python -m packagename.modulename來自頂層包可導入的地方 - 如果沒有安裝包,可能是包含包目錄的目錄。

如果此文件不應該是程序包的一部分,那么您的隊友運行錯誤。 顯式相對導入應轉換為絕對導入,您應該添加

from __future__ import absolute_import

到文件的頂部,以確保您不會得到任何意外的隱式相對導入。 在這種情況下,您的合作伙伴將需要停止運行該文件,但他們一直在運行它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM