在 Spyder 中使用包和环境
在啟動腳本時收到錯誤:“ModuleNotFoundError”
對于許多人來說,這似乎是一個常見問題,當通過“?pip?install module_xxx”導入本地機器上缺少 Python 模塊時,默認情況下它們不與Spyder鏈接。但是今天我提出了一個快速的技巧來處理這個問題,以獲得基本和快速的解決方案。(當您知道如何制作時總是很容易,對吧:) ?)
實際上,在Spyder的“Tool/PYTHONPATH manager”上設置本地機器通過pip下載和存儲已安裝模塊的路徑就足夠了,保存,關閉并重新啟動Spyder。
容易,不是嗎?:) 這里有一些截圖指導:
雖然一旦您熟悉它就相對簡單,但 Spyder 與其他包和環境之間的交互有時會讓初次用戶感到困惑。Spyder 的改進使這個過程變得更加容易(而且還有更多!),但我們想澄清這種關系是如何運作的。
我們將首先幫助您調試 Python 中處理包和環境時遇到的常見問題,即即使您確定已安裝模塊也無法導入。接下來,我們將指導您設置 Spyder 環境以改進您的工作流程。如果您正在尋找一種在不同環境中使用 Spyder 的方法(例如一個用于簡單數據分析、一個用于機器學習、一個用于開發應用程序等),您可以直接轉到最后一部分。
- 最常見的問題:在 Spyder 中使用新安裝的包
- 將軟件包安裝到與 Spyder 相同的環境中
- 使用其他環境和 Python 安裝 - 天真的方法
- 模塊化方法
 
最常見的問題:在 Spyder 中使用新安裝的包
在fooSpyder 之外安裝一個包(我們稱之為)后,用戶在嘗試將它導入到 IDE 中時可能會遇到錯誤:
在[ 1 ]:進口 FOO 回溯(最 近期的 通話 最后):文件 "<ipython-input-4-7f58dd7fb72e>",第 1行,在 < module > import fooModuleNotFoundError :沒有 名為“foo”的模塊發生這種情況是因為foo安裝(使用conda或pip)在與 Spyder 當前運行的環境不同的 conda 或 venv/virtualenv 環境中。
要確認這是問題所在,您需要:
激活環境(例如?myenv在其中安裝的包)foo(例如具有conda activate myenv供康達,source myenv/bin/activate或workon myenv為的virtualenv / VENV,等等)。
通過運行命令在那里啟動 Python 解釋器python。
在 Python 解釋器中運行以下命令:
導入 系統;系統。可執行文件啟動 Spyder 并在控制臺中運行與步驟 3 中顯示的相同的命令。
如果生成的路徑相同,則 Spyder 和包在同一環境中,import foo不應產生錯誤(否則可能存在與您的安裝無關的問題)。
如果生成的路徑不同,那么您有三個選擇:
- 激活安裝 Spyder 的環境并在其上安裝您的軟件包(請參閱下一節)。如果您嘗試在另一個環境(如myenv)中安裝未來的軟件包,您將獲得相同的ModuleNotFoundError.
- 將 Spyder 安裝到現有myenv環境或任何其他您想在其中工作的環境中,然后從那里運行它(請參閱以下部分)。這比第三個選項稍微簡單一些并且具有相同的效果,但是開銷更大并且靈活性較差。
- 只將spyder-kernels包安裝到myenv環境中,并在 Spyder 的首選項中設置 Python 解釋器路徑以指向myenvPython 可執行文件(請參閱最后一節。這需要 Spyder >=3.3.0 和一個更多的初始步驟,但需要較少的維護長期運行并避免重復安裝 Spyder。
將軟件包安裝到與 Spyder 相同的環境中
Spyder 是一個 Python 包,就像您可能習慣的任何其他包一樣,因此您可以import在其控制臺或編輯器中使用任何包,就像在 Spyder 環境中啟動的常規 Python 或 IPython 終端一樣:
- 如果 Spyder 與 Anaconda 一起安裝(我們推薦)并通過快捷方式從 Anaconda Navigator 或從 Anaconda Prompt 啟動而無需修改任何內容,這將是默認的baseAnaconda 環境。
- 如果 Spyder 是通過pip(僅限專家)安裝而不是安裝到virtualenv/ 中venv,則這通常是 Python 安裝pip本身所屬的任何東西。
- 如果您使用系統包管理器(apt-get、dnf、emerge等)來安裝 Spyder,這通常是您的系統 Python 及其包庫。
- 如果您將 Spyder 安裝到特定環境(conda-env或venv),或者它帶有預配置的環境(如 Keras 或 TensorFlow 的那些)并從那里啟動它,則它只能訪問來自該環境的包。
因此,如果您想在現有的 Spyder 安裝中使用包(例如,將其導入腳本、包或 Spyder IPython 控制臺),最簡單的方法是將包安裝到您所在的相同環境中。已安裝 Spyder,通常采用與安裝 Spyder 相同的方式(conda、pip、包管理器等)。但是,如果您使用pip、conda-forge、Github 或自定義渠道安裝軟件包、同時處理多個主要項目、使用預構建的環境或有更復雜的需求,您可能希望使用一個或多個單獨的環境來滿足您的需求。包。如果是這樣,下一節將解釋如何操作。
使用其他環境和 Python 安裝
如果您有一個現有的預配置環境(例如 Keras 或 TensorFlow),正在管理多個環境(例如用于開發或測試目的),或者甚至想在完全獨立的 Python 安裝中工作,就像 Spyder安裝(例如系統安裝的 Spyder 與單獨的 Anaconda 安裝,反之亦然),您有兩個主要選擇:
天真的方法
要在另一個環境中使用 Spyder,最簡單的方法是將它直接安裝到您希望在其中使用軟件包的環境中,然后從那里運行它。這適用于所有 Spyder 版本,安裝 IDE 后不需要額外配置;然而,它導致需要管理多個安裝,并且不像替代方案那樣靈活或可配置。因此,在處理多種環境時,我們建議?采用模塊化方法。
模塊化方法
從 Spyder?3.3.1開始,您可以將模塊化spyder-kernels包安裝到您希望工作的任何 Python 環境(conda環境、virtualenv/venv系統 Python、WinPython等)中,然后將 Spyder 在其 IPython 控制臺上使用的 Python 解釋器更改為指向到該環境的 Python 可執行文件。
這需要少量的準備和配置,但比將 Spyder 完整安裝到該環境中要“輕得多”和更快,避免了依賴沖突,并開辟了新的工作流程可能性。
為此,請執行以下步驟:
激活的環境(例如,?myenv在其中你想工作()如與conda activate myenv用于暢達,source myenv/bin/activate或workon myenv為的virtualenv / VENV,等等)
spyder-kernels使用以下命令在那里安裝軟件包:
-  conda install spyder-kernels?如果使用 conda/Anaconda, 
-  pip install spyder-kernels?如果使用 pip/virtualenv。 
通過任一方法安裝后,在同一環境中運行以下命令:
python - c “導入系統;打印(sys.executable)”和復制由命令返回的路徑(它應該結束python,pythonw,python.exe或者pythonw.exe,根據您的操作系統上)。
停用該環境,激活安裝了 Spyder 的環境(如果您已將其安裝在其自己的環境中),然后像往常一樣啟動 Spyder。
Spyder 啟動后,導航到Preferences > Python Interpreter > Use the following interpreter步驟 3 中的路徑并將其粘貼到文本框中。
啟動一個新的 IPython 控制臺。安裝在您myenv環境中的所有軟件包都應該在那里可用。如果使用 conda,則當前環境的名稱及其 Python 版本應顯示在 Spyder 的狀態欄中,將鼠標懸停在其上應顯示所選解釋器的路徑。
筆記:
- 為了讓變量資源管理器能夠顯示特定數據類型(Numpy 數組、Pandas Series/DataFrame 等)的內置編輯器,需要在 Spyder 的環境中安裝相應的可選 Spyder 依賴項(Numpy、Pandas 等),不僅僅是 IPython 控制臺工作環境。此外,對象資源管理器中顯示的第三方包提供的自定義類目前也需要這樣做,盡管未來的 Spyder 版本可能會刪除后一個限制。
- 雖然沒有它 Spyder 應該可以正常工作,但確保Spyder 環境中的 Python 次要版本(3.6、3.7、3.8等)與您的工作環境中的相匹配,如果可行,將最大限度地減少出現任何問題的可能性。
總結
以上是生活随笔為你收集整理的在 Spyder 中使用包和环境的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 拧魔方问题-模拟法
- 下一篇: python做流程管理平台_[译] Ai
