哪種網(wǎng)站開發(fā)最簡單seo發(fā)帖工具
這篇回答兩個問題:
1.為什么在 pycharm中打開新的project,切換interpreter 之后發(fā)現(xiàn)自己之前裝的庫消失了?
2.為什么?interpreter 切換到python'3.8了, terminal 還是在 3.9??
問題的關(guān)鍵:搞懂什么是 environment,環(huán)境和pyhton編譯的版本不是一個東西,python 本身的安裝路徑下的site-packages 和 新環(huán)境的site-packages 是不同的路徑,里面的庫也不一樣。
簡單的理解: 一個python project的編譯,需要的是一個環(huán)境,
1.默認(rèn)的是電腦環(huán)境變量;是用的電腦安裝環(huán)境變量下面的path的第一個 python版本以及其下面的site-packages。?
2.可以創(chuàng)建新一個環(huán)境,這個環(huán)境里面要指定一個python版本,然后環(huán)境下的site-packages繼承自這個 python 版本下的第三方庫,然后可以再安裝自己需要的庫。所以一個好的方式是,本身python下的第三方庫最好下一些通用的,然后新的環(huán)境里安裝需要的特殊的庫。
每個site-packages 下面的每一個庫只能安裝一個版本。
目錄
狀態(tài)1 只有 local 環(huán)境,只安裝了 python 3.9 ,3.9里面安裝過各種庫,即package下面的東西
狀態(tài) 2, 新安裝一個 python 3.8, 還沒裝各種庫(里面就numpy pipi setuptools)
狀態(tài)3:新建了一個3.8環(huán)境,并安裝了各種庫。
狀態(tài)4: 新打開了一個 名為?wolpertinger_ddpg-master 的project,add interpreter。
總結(jié)一下:
問題2是如何出現(xiàn)的? 即為什么我切換了 interpreter到 3.8,我的terminal還是3.9??
之前重裝了python3.8以及在3.8環(huán)境下裝了gym,
意思是:現(xiàn)在電腦上有兩個python版本,1是 python3.9,是電腦系統(tǒng)環(huán)境里默認(rèn)的python版本,二是python3.8.
然后今天發(fā)生了一件神奇的事情,我重新打開了一個新的project,名字是?wolpertinger_ddpg-master, 又切換到python 3.8編譯,結(jié)果是發(fā)現(xiàn)我的 python 3.8里面 根本沒有g(shù)ym??給我干蒙了。
這只是懵逼1號,接下來更神奇的來了,我嘗試 從? terminal 重新 pip gym,結(jié)果一直報錯!!我把測試了python 版本, 3.9!!! 我明明已經(jīng)在settings那里把intepreter 切換到3.8了,為啥terminal還是3.9???幾次切換重啟都沒有用
Solution:
pycharm 的虛擬環(huán)境【陷阱】,你中招了嗎? - 知乎 (zhihu.com)
看了這篇帖子,明白以下問題:
對于問題1,首先要明白環(huán)境 env 和 python-version的區(qū)別;我所理解的虛擬環(huán)境就是編譯所需要的全部工具的環(huán)境,這里面有一個必選項就是??一個 python?編譯器(不同的環(huán)境可以有不同的版本),各種第三方的庫,第三方的一個名字的庫只能裝一個版本。
python的一個project 的 編譯 需要的是一個環(huán)境, 而非一個編譯器那么簡單。
如何去理解這件事情呢?
先理解四個狀態(tài):
狀態(tài)1 只有 local 環(huán)境,只安裝了 python 3.9 ,3.9里面安裝過各種庫,即package下面的東西
狀態(tài) 2, 新安裝一個 python 3.8, 還沒裝各種庫(里面就numpy pipi setuptools)
兩種情況的邏輯示意圖如上,這兩個 實際上都在 安裝python的安裝路徑下,package在 對應(yīng)的安裝path\Lib\site-packages下面。即現(xiàn)在電腦中的情況是:
裝了兩個version的python
他們各自下面的第三方庫是:
狀態(tài)3:新建了一個3.8環(huán)境,并安裝了各種庫。
我打開了?fjsp-drl-main這個project,在pycharm settings選擇 add interpreter,選擇的是3.8,然后請注意:這是選擇新建了一個環(huán)境,這個環(huán)境在這個project的路徑下(當(dāng)然我第一次新建時候并不知道環(huán)境這個東西,才會導(dǎo)致后來的出錯)
然后我在 這個環(huán)境的package里裝了 gym==018.0等等幾個第三方庫。
也就是這個環(huán)境現(xiàn)在是這樣的,注意哦,我標(biāo)的Env是 這個project而不是local
那么這些庫的實際路徑在哪里呢??
狀態(tài)4: 新打開了一個 名為?wolpertinger_ddpg-master 的project,add interpreter。
我本意是使用python 3.8編譯,而且想要 使用和 上一個 project ( fjsp-drl-main)一樣的庫,其實也就是?( fjsp-drl-main)的環(huán)境。但是因為不懂環(huán)境 并不等同于python的version,也就是一個python 版本可以在多個環(huán)境里存在。 這時候 發(fā)現(xiàn)? 我的庫怎么都沒了??
其原因是: 這個python 3.8環(huán)境是新建的,就是 里面只有 local 38的庫,就是 和?
3.8pyhton 安裝路徑下的package 里的是一樣的。
總結(jié)一下:
就是 最開始 只有狀態(tài) 1,3.9 version, 然后 安裝了 第二個python版本 ,3.8version;
狀態(tài)3,打開fjsp-drl-main project,新建了一個環(huán)境,編譯版本是3.8,安裝了第三方的庫;
狀態(tài)4,打開了?wolpertinger_ddpg-master,新建了一個環(huán)境,編譯版本是3.8。新建的env只會繼承對應(yīng)的 python版本local的下的庫,即 狀態(tài)4現(xiàn)在來自狀態(tài)2,所以并沒有狀態(tài)3下面的第三方庫,這就是我為什么安裝了三方庫,庫不見了得原因。
在從安裝路徑角度看一下:
狀態(tài)1的packages 也就是第三方庫的安裝是在python本身安裝路徑下:
D:\APPs\Python\Python39\Lib\site-packages
狀態(tài)2:?D:\APPs\Python\Python3.8.5\Lib\site-packages
狀態(tài)3:D:\MyWorks\PythonProject\fjsp-drl-main\venv\Lib\site-packages
狀態(tài)4:D:\MyWorks\PythonProject\RL\wolpertinger_ddpg-master\venv\Lib\site-packages
狀態(tài)4的site-packages? 繼承自 狀態(tài)2,就是python3.8下面本身的那個site-packages,自然沒有狀態(tài) 3 site-packages里裝的庫了,問題1 至此結(jié)束。
問題2是如何出現(xiàn)的? 即為什么我切換了 interpreter到 3.8,我的terminal還是3.9??
我在狀態(tài)4沒找到第三方庫的時候,以為操作有問題,又一次 add interpreter, 這次沒有 new 一個新的 environment,而是選擇了local,即選了狀態(tài)2的編譯環(huán)境。這個時候要注意,
選了interpreter為狀態(tài)2,在terminal查詢
我猜測,是Local 的環(huán)境問題。就是 現(xiàn)在沒有新的環(huán)境,因此 ternimal并沒有切換到任何環(huán)境。?選擇的local 是電腦 local 的python 的編譯路徑。而我電腦的環(huán)境變量,3.9在3.8之前,所以電腦系統(tǒng)默認(rèn)的python 版本就是 3.9,所以terminal顯示是3.9.
解決方案:
既然我想用狀態(tài)3下面的環(huán)境編譯,要么把 project? ? ”wolpertinger_ddpg-maste“的環(huán)境切換到狀態(tài)3的那個環(huán)境;要么 在狀態(tài)4下面新裝需要的庫。
第一種切換環(huán)境:
不要新建環(huán)境,直接從 exsiting里選 狀態(tài)3 的那個環(huán)境路徑。
切換之后就有對應(yīng)的庫了
注意這個時候,terminal 還沒有切換,要想把terminal切換到這個環(huán)境下,需要
D:\MyWorks\PythonProject\fjsp-drl-main\venv\Scripts
命令如下
cd D:\MyWorks\PythonProject\fjsp-drl-main\venv\Scripts.\activate
前面出現(xiàn) venv,即環(huán)境名字,說明切換成功。
也有教程如何讓terminal自動切換到對應(yīng)虛擬環(huán)境的,后面再說吧,累了。。。。。