在一個文件名爲BinarySearch.py
我有以下幾點:如何導入我自己的python文件?
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
在另一個文件中,假設它被命名爲我:
import os
cwd = os.getcwd()
import sys
sys.path.append(cwd)
import BinarySearch
然而,當我嘗試運行,我得到以下錯誤消息:
NameError: name 'SearchResult' is not defined
它看起來像import BinarySearch
實際上沒有im端口BinarySearch
我正在使用Spyder IDE。這兩個文件(BinarySearch.py
和)位於相同的目錄中。此外,我去了工具> PYTHONPATH經理,並將目錄添加到路徑。我也嘗試重新啓動spyder,以查看是否需要使路徑更改生效。它仍然不起作用。
編輯:
在它扔錯誤的代碼行是以下幾點:
sr = SearchResult()
本來我以爲這種說法import BinarySearch
也有同樣的行爲,如果我複製的全部內容的BinarySearch.py並將其粘貼在import
語句位於file2.py內部的位置。我現在看到,這不是如何import
的作品。
'從BinarySearch導入SearchResult'是不夠的。文件BinarySearch.py中還有其他的東西,除了'SearchResult'之外的東西,我也需要它。 –
在這種情況下,使用'import BinarySearch'並引用模塊名稱:'BinarySearch.SearchResult','BinarySearch.SomethingElse',...或使用'從BinarySearch導入SearchResult,SomethingElse'。另一種選擇是使用'from BinarySearch import *',這將允許您使用BinarySearch中的所有內容,但這是[不鼓勵](https://docs.python.org/2/howto/doanddont.html#from-module-進口) – dacada