雪花台湾

為什麼Anaconda已經自帶安裝了一個包但是在Vscode里import卻提示這個包不存在?

是否需要在哪裡添加包的路徑?或者還需要在哪裡設置什麼呢?


去了解下 python 環境管理吧!

python的環境管理,我們可以從語言和操作系統兩個層面來分析。接下來具體說說。

語言環境

語言層面的環境管理,python已經為我們提供了相應的解決方案,這裡將介紹的是 vritual env 和 conda env。

在工程開發方面,我們經常使用的是virtual env。在數據科學研究方面,我們經常使用的conda env。它們都是通過創建獨立的目錄來存放python運行所需的文件,最終實現生成一個獨立的虛擬環境。

virtual env

virtual env不是python自帶的功能,我們需要先安裝相應的庫。pip安裝即可:

$ pip install virtualenv

接著來使用它。先來創建,進到自己當前的項目目錄,執行如下命令:

$ virtual .env

此時就成功創建了一個獨立的環境。但是這個時候,控制台的默認環境並沒有切換到這個獨立環境下,在執行下面命令的:

$ source .env/bin/activate

如果你使用的IDE,一般它們都是支持環境選擇的。找到對應的設置,選用環境目錄就好了。

virtual env就簡單說這些吧,不然回答就太長了。如果想更流暢的使用virtual env,可以再去了解一下virtualenvwrapper。深入了解傳送門:

Pipenv 虛擬環境 — The Hitchhikers Guide to Python?

pythonguidecn.readthedocs.io

2017年,requests 作者開發了個新的 python 環境管理工具,通過結合 pip + virtualenv,提供了一種非常人性化的虛擬環境使用方式。

conda env

如果要使用conda env來管理python環境,首先你的python得是用anaconda安裝的。

anaconda是一個免費開源的Python和R語言的發行版本,用於計算科學(數據科學、機器學習、大數據)等,適用於Windows、macOS和Linux。其實主要是python,做數據科學的朋友應該都很了解。

有了conda的環境,就可以直接使用它的命令來創建虛擬環境了。如下:

conda create -n python36 python=3.6

它不像 virtual env 那樣以本地的python環境為模板創建新環境,而是會從網路上拉取文件,所以它的創建速度會相對慢些。當然,正是因為這樣,conda安裝環境可以使用很多不同的模板,比如適合數據分析或純粹的python環境,都可以在創建的時候指定。我記得anaconda提供了雲服務,我們應該也可以共享自己的python環境模板。要詳細了解可以去官網看看。這裡貼個之前合作過的某位大神的文章,傳送門:

致Python初學者們 - Anaconda入門使用指南?

www.jianshu.com

操作系統

前面介紹的方法固然已經可以解決我們遇到大部分的問題。但是某些情況它還是無法處理,比如操作系統層面的文件丟失,系統配置文件破損。

這就需要從系統層面看問題,此時或許都喜歡重裝系統來解決問題,但重裝系統卻會把之前的環境都破壞了。那麼,如果能夠製作一份適合自己的環境時刻備份著,不是很好嗎。從這個角度出發,我來說說三類解決方案:虛擬機、vagrant、docker。

虛擬機

也就是 virtual machine,創建虛擬機首先得選擇相應的虛擬機軟體,比如vmware、virtualbox這兩個比較常用。使用虛擬機有什麼優點呢?

但是虛擬機缺點也很明顯,比如太耗費資源、佔用空間太大、安裝速度太慢等。這實在難以忍受。

vagrant

簡單來說可以這麼理解,vagrant是以虛擬機軟體為基礎開發的便於虛擬機管理的軟體。它支持的虛擬機軟體種類多樣,比如vmware、virtualbox、hyper-v等。它的目標是 "Development Environments Made Easy",也就是簡化開發環境的工作,而非生產環境。

我這裡推薦是vagrant+ virtualbox這個組合,為什麼呢?基於virtualbox的幾個優點:

vagrant還提供了有哪些優點?首先,前面介紹的虛擬機有的優點它都有,其他呢?如下:

我幾年整理過一篇vagrant的文章,不過感覺寫的一般。有興趣可以看看:

兩行命令創建Linux?

www.jianshu.com

docker

容器技術是現在很火的一門技術,而其中佔有份額最大的就是docker。和虛擬機不同,它是從文件系統層面的實現的虛擬化。它的學習成本比較高,vagrant的很多優點它都有且更勝一籌;比如:

現在的微服務架構很多都離不開docker+k8s的組合。容器技術將來應該會逐漸成為生產環境部署的主流方式。


你看看是否你使用了這個interpreter


在當前環境下使用conda list命令,看看你說的那個包在不在,如果你激活了虛擬環境,用pip list查看一下,沒有的話就pip install。


打開settings.json,看一下。


重新在environment裡面的all添加下載


推薦閱讀:
相关文章