簡體   English   中英

在 Spyder 中運行腳本時無法導入我自己的模塊

[英]Cannot import my own module when running script in Spyder

根據官方 Python 文檔這篇文章,將自己的模塊導入腳本非常容易。 基本上我只需要創建 my.py 文件,將它們保存在一個目錄中,然后我可以使用 import 它們

from my_module import my_function

這正是我在我的項目中所做的。 我寫了兩個腳本並將它們保存在一個目錄中。 我想在第三個腳本中使用它們的一些函數(同樣它保存在同一目錄中)。 如下圖所示。

我的蟒蛇腳本

現在我通過以下方式導入WebScraper.py 在此處輸入圖像描述

正如您在上圖中看到的那樣,有一個錯誤表明沒有名為WebScraper的模塊。 我該如何處理這個問題?

在 Spyder IDE 中,我可以從您的屏幕截圖中看出,當前工作目錄(顯示在右上角)與腳本所在的目錄(顯示在編輯器面板頂部)不同。

如果您打開“工具”菜單,選擇“首選項”,然后切換到“運行”選項卡,您將找到一個名為“工作目錄設置”的框,您可以在其中選擇“正在執行的文件的目錄”或“當前工作目錄”。 我懷疑,事實上,你選擇了后者。 這將解釋為什么找不到模塊。

使用默認設置——“正在執行的文件的目錄”——Spyder 將簡單地在其自己的文件夾中執行腳本,並且腳本可以毫無問題地找到模塊。

您正在使用 spyder。

您需要做的就是在 spyder 文件資源管理器中轉到您的項目,即

/User/david/Document/Python/Project/

然后關閉 ipython 終端並在文件資源管理器中開始一個新的(在你進入項目文件夾之后)。

為什么您的方法不起作用,因為 ipython 將 python 執行路徑作為在文件資源管理器 (spyder) 中打開的當前路徑

運行代碼,它會工作

其他明智的你需要提供相對路徑和使用

 from . import WebScraper 
 x=WebScraper().function

默認情況下,大多數應用程序都有其默認工作目錄。

例如:如果您將打開命令提示符,它的提示符類似於 Windows 中的C:\\Users\\<username> /Users/<username> ,MAC 中的/Users/<username>

所以肯定的是,Spyder 也將有自己的工作目錄。 每當您執行任何腳本時,Spyder 都會嘗試先查看該腳本。

我的建議是以編程方式檢查工作目錄並導航到正確的位置(如果我們在錯誤的位置)。 看看下面的代碼。

import os
os.getcwd() # Check current directory's path
os.chdir('/Users/david/Documents/Python/Project') # Navigate

在嘗試導入之后,它將起作用。

如果您願意,可以將此路徑附加到sys.path列表。

對於我在 Spyder 5.1.5 和 Python 3.7.9 上,我必須重新啟動 IPython 內核!

症狀是這樣的。

  • 我在同一個目錄中有兩個模塊 m1 和 m2
  • 模塊 m1 導入 m2
  • Strat Spyder 並運行 m1,一切正常
  • 添加模塊 m3 並從 m1 導入
  • 運行 m1,Spyder 抱怨並引發錯誤 ModuleNotFound
  • 重啟Ipython內核,一切正常,沒有錯誤

類似的事情發生在我身上。 我可以從終端導入,運行 python。 在 spyder 上,使用相同的 python 版本,我無法導入相同的包。 在嘗試了不同的方法后,重新安裝 Spyder 解決了這個問題。

將 python 文件保存在同一文件夾中,只需使用 import os os.chdir("module folder") 將目錄更改為當前 python 文件位置

它會起作用。 它只對我有用。:)

暫無
暫無

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

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