簡體   English   中英

Python - 雖然已安裝但未找到包

[英]Python - package not found although it is installed

我有以下版本的python

import sys
print(sys.version)

3.6.5 | packaged by conda-forge | (default, Apr  6 2018, 13:44:09) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)]

我使用以下命令安裝了一個包

pip install wfdb

它已成功安裝,因為當我編寫命令時:

pip show wfdb

出現以下信息位置:/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages

但是,當我在 Python notebook 中輸入命令import wfdb或在終端中輸入 python 版本時,我收到以下消息

No module named 'wfdb'

它與python檢查包在哪里的路徑有關嗎? 如何檢查這一點以及如何更改它?

您(至少)有 2 個 Python 安裝,一個由 Anaconda 管理,另一個似乎是在系統范圍內安裝的官方 Python.org Mac 版本。 命令行上的pip命令是與 Python.org Mac 構建相關的命令。

pip是綁定到特定 Python 安裝的腳本,並且可以在不同位置安裝多個版本的腳本,並且通常還會安裝pipXpipX.Y以匹配它所在 Python 版本的XY版本指示器拴。 對於 Python 3.6,這意味着相同的腳本也可用作pip3pip3.6 (這也意味着pip可以連接到 Python 2 或 Python 3,具體取決於您的確切操作系統設置。正如某些答案可能聲稱的那樣,沒有版本號的pip安裝到 Python 2.x 中並不是給定的)。

請注意,當您在 shell 中運行沒有路徑的命令(例如pip而不是/usr/bin/pip )時,您是在要求 shell 在PATH列出的多個位置為您查找命令環境變量。 然后使用該命令修復PATH列表中的第一個位置。 which -a <command>會告訴您可以在其中找到命令的所有可能的PATH位置。您始終可以使用命令的完整路徑來繞過PATH搜索路徑。

您始終可以驗證pip命令連接到的 Python 版本:

pip -V

這將輸出pip的版本及其安裝位置。 它會打印出類似的東西

pip pipX.pipY path/to/pythonX.Y/site-packages/pip (python X.Y)

其中pipX.pipY是 pip 版本號, path/to/pythonX.Y告訴您這是用於什么 Python 安裝。

您可以嘗試通過運行將其與 Python 版本匹配

python -m site

它輸出該 Python 版本的 Python 模塊搜索路徑。 Python 也可以使用pythonpythonXpythonX.Y運行,並且受相同的PATH搜索約束。

請注意那里的-m開關,它指示 Python 在其模塊搜索路徑中查找模塊並將其作為腳本執行。 大量模塊支持以這種方式運行,包括pip 這很重要,因為如果您已經可以啟動正確的 Python 版本,這有助於避免搜索更好的pip命令。

您有幾個不錯的選擇:

  • 由於您使用的是 Anaconda,因此您可以為同一項目尋找 conda 包。 wfdb這樣一個包 安裝它

     conda install wfdb

    Anaconda 旨在為您提供更廣泛的軟件管理體驗,其中包括比 Python PyPI 生態系統更廣泛的軟件選項集,並且 conda 包通常管理的不僅僅是 Python 包。

    Conda 包通常由與包本身不同的一組開發人員維護,因此 PyPI 上可能有比 Conda 更新的版本(需要pip install )。

    這不是所有 Python 包的選項,如果沒有conda包,您必須使用pip 請參閱安裝非 conda 包

  • 您可以使用conda命令來創建conda 環境 創建環境后,您可以使用以下命令激活它

     source activate <name_of_cenv>

    更改您的PATH設置。 在環境“活動”的情況下, PATH列出的第一個目錄是 conda 環境的目錄,而pip命令將是與該環境相關聯的目錄。

    請注意,conda 環境為特定項目提供了一個獨立的環境,將庫安裝與中央site-packages位置中的其余 Python 包分開。 如果要為所有 Anaconda Python 項目安裝一個包,請不要使用 conda 環境。

  • 使用 Anaconda Python 二進制文件將pip作為模塊運行; 當您可以運行/path/to/pythonpythoncommand打開正確的 Python 版本時,您可以使用相同的路徑運行/path/to/python -m pip ...而不是pip ...絕對確定您正在安裝到正確的 Python 版本中。

  • 尋找更好的pip命令,使用which -a pipwhich -a pip3.6等。但是如果您已經知道 Python 二進制文件,請在相同的bin位置查找pip 如果您有anaconda/bin/python ,那么可能也有anaconda/bin/pip

正如你可以在這里閱讀:

pip3 和 pip 只有在您不使用任何環境管理器(如 virualenv(或)conda)時才會有所作為。 現在,當您創建一個具有 python==3.x 的 conda 環境時,pip 將等同於 pip3。

出於這個原因,可能是您在安裝所需的軟件包和運行代碼之前沒有激活 Conda 環境。

激活新環境:

在 Windows 上:

activate myenv

在 macOS(這應該是您的選擇)和 Linux 上:

source activate myenv

注意:將 myenv 替換為環境名稱。

你已經安裝了 python2.x 包並且你正在使用 python3.x。 嘗試:

pip3 install wfdb

如果你沒有pip3運行:

[apt-get/yum] install python3-pip

您可以通過運行以下命令查看當前安裝了哪些軟件包:

pip freeze

和 python 3.x 包

pip3 freeze

請記住,每次安裝 Python 包時,它都會放在一個特定 Python 版本的目錄中。 因此你的錯誤。

which python

給你PATH到 python

然后/path/to/python -m pip install thepackagetobeinstalled

非常感謝@MartijnPieters

暫無
暫無

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

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