[英]How do I import my own python files?
在名為BinarySearch.py
的文件中,我具有以下內容:
class SearchResult:
def __init__(self):
self.was_found = False
self.index = 0
def __str__(self):
s = "SearchResult"
s = s + " was found: "
s = s + str(self.was_found) + "index: " + str(self.index)
return s
在另一個文件中,我們將其命名為file2.py
:
import os
cwd = os.getcwd()
import sys
sys.path.append(cwd)
import BinarySearch
但是,當我嘗試運行file2.py
,出現以下錯誤消息:
NameError: name 'SearchResult' is not defined
看起來import BinarySearch
實際上沒有導入BinarySearch
我正在使用Spyder IDE。 這兩個文件( BinarySearch.py
和file2.py
)都位於同一目錄中。 另外,我轉到工具> PYTHONPATH管理器,並將目錄添加到路徑。 我還嘗試重新啟動間諜程序,以查看是否這是使路徑更改生效所需的條件。 它仍然不起作用。
編輯:
在file2.py
中引發錯誤的行如下:
sr = SearchResult()
最初,我假定語句import BinarySearch
具有與復制BinarySearch.py的全部內容並將其粘貼到import
語句在file2.py內的位置相同的行為。 我現在看到import
不是這樣的。
當前目錄已經在路徑中,而無需以任何方式(通過IDE或sys.path)將其明確放置在路徑中
在第二段代碼中,您缺少最后一行,我認為這是給您的錯誤,很可能是
print(SearchResult())
它應該是
print(BinarySearch.SearchResult())
或者您可以將導入更改為
from BinarySearch import SearchResult
然后你可以做
print(SearchResult())
一種解決方案似乎是將import語句從
import BinarySearch
至:
from BinarySearch import *
星號/星號從本質上講是“全部導入”,它從BinarySearch.py
文件(包括SearchResult
類)中導入所有內容。
常規的普通簡單導入也會導入所有內容,但是會強制您通過名稱空間訪問內容。 文件BinarySearch.py
內容現在都位於名稱空間BinarySearch
。 我們可以file2.py
會原始的import
語句,但是file2.py
我們在file2.py
中使用來自BinarySearch
,就必須添加前綴。 我們將擁有如下代碼:
# inside file named file2.py
sr = BinarySearch.SearchResult()
如果我們厭倦了編寫BinarySearch.
一直以來,我們都可以為名稱空間創建別名,如下所示:
import BinarySearch as bs
然后,在file2.py
內部,語句sr = bs.SearchResult()
將正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.