1. 程式人生 > >關於Python安裝的第三方包無法在Pycharm中引用的問題

關於Python安裝的第三方包無法在Pycharm中引用的問題

關於Python安裝的第三方包無法在Pycharm中引用的問題

0 引言

引起Python中安裝的第三方包在Pycharm中引用失敗的原因有多種,下面把幾種典型的問題歸納一下:1、pip安裝失敗,2、安裝成功,但Pycharm的直譯器中沒有剛安裝的包,3、Pycharm直譯器中出現剛安裝的包,卻無法引用。

1 pip安裝失敗

pip安裝失敗也有多種情況:1、由於網路問題導致安裝失敗;2、如果安裝了Anaconda環境,在conda命令中安裝,也可能有問題。:

1.1 由於網路問題導致安裝失敗

  1. 到相應的網站上下載對應的whl檔案, 包名中對應的cp+數字代表支援的格式包名中對應的cp+數字代表支援的格式
  2. 然後將下載的whl檔案移動到本地python的script目錄下,此時需要選擇你project所在的目錄,如果是虛擬目錄就需要進入虛擬目錄的script目錄下。(本機用的虛擬目錄network:D:\Anaconda3\envs\network\Scripts)
  3. pip intall “檔案路徑”

1.2 在Anaconda中安裝失敗

如果是用conda install -n network dnspython3(注:後面兩個引數以自己為準,network是我的專案所在的虛擬目錄,dnspython3是要安裝的包的名字)安裝,如果Anaconda相關網站沒有這個包,那麼就會報出找不到的錯誤。
如下:

F:\資料\上課\網路程式設計\軟體工具\memcached_en32or64\x64>conda install -n network d
nspython3 Solving environment: failed

PackagesNotFoundError: The following packages are not available from
current cha nnels:

  • dnspython3

Current channels:

To search for alternate channels that may provide the conda package
you’re looking for, navigate to

https://anaconda.org

and use the search bar at the top of the page.

這時候,就需要進入虛擬環境network,用pip命令安裝。如下:

F:\資料\上課\網路程式設計\軟體工具>activate network

(network) F:\資料\上課\網路程式設計\軟體工具>pip install dnspython3

安裝成功後,會顯示:

Successfully built dnspython3 Installing collected packages:
dnspython, dnspython3 Successfully installed dnspython-1.15.0
dnspython3-1.15.0

2 安裝成功,但Pycharm的直譯器中沒有剛安裝的包

如何確定包是否安裝成功呢?
第三方的包,一般都安裝在**\Lib\site-packages目錄下,如果你在此目錄中能找到你剛剛安裝的包名,那麼代表此包已經安裝成功。

如果確定包已經安裝成功,而Pycharm中使用的時候提示:

AttributeError: module ‘dns’ has no attribute ‘resolver’

ModuleNotFoundError: No module named ‘dns.resolver’

類似的錯誤,說明Pycharm當前project所在的直譯器中沒有此包,那麼需要檢查你的project 的直譯器是否正確。如果你使用了虛擬目錄,而你pip安裝的時候是安裝在你的系統預設的環境裡面,那麼就會導致此問題產生。
如果pip時候安裝在系統預設環境裡面,也就是所謂的公共環境裡面,那麼就點選file->setting,再按下圖操作,點選圖中右邊的加號,去新增搜尋剛安裝的包即可。
在這裡插入圖片描述

在此,因為Python專案所依賴的包的版本問題,所有作者強烈建議大家使用虛擬目錄來專案,而且所有的安裝也僅僅在當前虛擬目錄中進行,最好不到預設環境中安裝。

當然,還有其他的一些解決方法,可以參考此文:Python在終端通過pip安裝好包以後,在Pycharm中依然無法使用的解決辦法1,作者在這種情況中,給出了三種解決辦法,選擇其中任意一種即可。

3 Pycharm直譯器中出現剛安裝的包,卻無法引用

如果在Pycharm的當前project所在的直譯器裡面,已經出現了剛安裝的包,卻還是無法引用,那麼問題可能是:
你當前專案已經一個模組或者目錄,與安裝包的模組名字相同,引起衝突所致。
比如作者需要安裝包dnspython3,且已經安裝成功,如下:
在這裡插入圖片描述
而且,確定在project的直譯器中已經出現(說明Pycharm已經載入了此包),如下:
在這裡插入圖片描述
這時候import dns還是會提示沒有此模組,原因是我的專案中已經有一個dns的目錄了,所以import的時候,會優先匯入自己專案中的dns,如下:
在這裡插入圖片描述

此時,修改自己的dns目錄名字,即可解決衝突問題。如下圖:
在這裡插入圖片描述

至此,建議大家在開發專案時,在自己的目錄名字上最好加上專案字首,如dns改成 net_dns,這樣能有效避免匯入第三方包而導致名字衝突的問題。


  1. https://blog.csdn.net/kouyi5627/article/details/80531442
    end。 ↩︎