1. 程式人生 > 其它 >基於Pycharm建立的虛擬環境移植問題

基於Pycharm建立的虛擬環境移植問題

基於Pycharm建立的虛擬環境移植問題


問題的引出

​ 在昨天夜裡,我突發奇想要不要把我建立的虛擬環境git上去,這樣以後要是出了什麼事,也不必一個一個包的再去安裝,所以我就將整個PYTHON_ENV資料夾拷貝到了我的GIT資料夾下。拷貝完成之後,來隨便寫一個Hello World!來驗證一下,拷貝過來的虛擬環境它還可以用嗎?

​ 於是便開始了一系列的工作:

  1. 新增虛擬環境:
  1. 驗證是否可用:

    哎,我們發現複製過來的環境居然可以使用哎!這難道不是一件很開興的事嗎?

  2. 問題出現:

    後來在在使用Terminal的時候發現,在這裡面使用我們的pip命令之後,它居然是全域性的命令,這就很不友好,要記得在沒有拷貝之前,使用這些命令的作用範圍都是虛擬環境

    內的,那這該怎麼辦呢?


問題的發現

檢視虛擬環境資料夾

​ 出現問題之後,就逐漸開始懷疑虛擬環境所在的檔案夾了,是不是裡面有著相關的配置檔案呢?

​ 我們來看看其中的檔案構造:

其中include資料夾是一個空資料夾,而pyvenv.cfg的內容呢,是我們基於什麼環境所建立的虛擬環境。

home = D:\Install\Python\Python372
include-system-site-packages = false
version = 3.7.2

​ 那麼,此時問題肯定就在剩餘的資料夾中了,而開啟lib資料夾發現這裡面都是一些我們所安裝的包的一些相關檔案。此時問題便逐漸的歸到了Scripts

檔案夾了,開啟資料夾一看:

那麼此時,問題便可歸於前四個檔案了,active,active.bat,Active.ps1,deactive.bat.

建立一個新的虛擬環境與之比對

​ 由於我們可能已經找到了引起這個問題出現的關鍵性檔案,所以我們便可以在隨便再建立一個檔案與它進行比對:

  1. active檔案:

    在這個檔案中我們發現了一共有兩處不同:

那麼,很容易看出第一處不同是路徑,它還是我拷貝之前的路徑,第二處不同顯然是虛擬環境的名稱,現在我們將它改正過來。

  1. activate.bat檔案:

    這和上面的問題都一樣。

  2. Activate.ps1檔案:

    同樣是路徑的問題。

  3. deactive.bat

    檔案:

​ 沒有差別。

解決方法

  1. 找到你所建立的虛擬環境資料夾。

  2. 開啟Scripts資料夾。

  3. 找到active檔案,找到第40行,將VIRTUAL_ENV=" "雙引號裡改為你拷貝後的路徑。

  4. 找到active.bat檔案,找到第11行,將set "VIRTUAL_ENV=改為你拷貝後的路徑。

  5. 找到Active.ps1檔案,找到第30行,將$env:VIRTUAL_ENV=" "雙引號裡改為你拷貝後的路徑。

  6. 在這裡有兩種方法:

    1. 如果你的pip版本不是最新的,你可以採用如下方式:

      在全域性環境下啟用我們的虛擬環境

      運用 python -m pip install --upgrade pip命令

      # 示例
      # 開啟命令列輸入如下程式碼
      D:\Data\GIT\python_Practice\PYTHON_ENV\DIGIFAX_ENV\Scripts\activate.bat # 這裡的路徑是你虛擬環境下的路徑
      python -m pip install --upgrade pip
      
    2. 進入虛擬環境下,刪除Scripts資料夾下的

      接著刪除Lib\site-packages下!

      然後進入Pycharm的環境配置介面,會看見有黃色高亮的這一行,點選Insatll packaging tools便可。

      然後靜待片刻,就會發現和以前一樣可以使用了,如若不行再來一次!

    ​ 當然了,你要是覺得此種方法有點麻煩,你可以在pycharm中指定一箇舊版本的pip進行安裝,再將其更新,採用第一種方法。