![](/img/trans.png)
[英]Cannot Import Python MySQL module when running a script using crontab
[英]Cannot import my own module when running script in Spyder
根據官方 Python 文檔或這篇文章,將自己的模塊導入腳本非常容易。 基本上我只需要創建 my.py 文件,將它們保存在一個目錄中,然后我可以使用 import 它們
from my_module import my_function
這正是我在我的項目中所做的。 我寫了兩個腳本並將它們保存在一個目錄中。 我想在第三個腳本中使用它們的一些函數(同樣它保存在同一目錄中)。 如下圖所示。
正如您在上圖中看到的那樣,有一個錯誤表明沒有名為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 內核!
症狀是這樣的。
類似的事情發生在我身上。 我可以從終端導入,運行 python。 在 spyder 上,使用相同的 python 版本,我無法導入相同的包。 在嘗試了不同的方法后,重新安裝 Spyder 解決了這個問題。
將 python 文件保存在同一文件夾中,只需使用 import os os.chdir("module folder") 將目錄更改為當前 python 文件位置
它會起作用。 它只對我有用。:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.