簡體   English   中英

如何導入自己的python文件?

[英]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.pyfile2.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.

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