天天看點

在Win10的Ubuntu子系統中安裝FEniCS第一步:将Ubuntu子系統安裝至非系統盤第二步:更換國内源第三步:安裝Anaconda第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)第五步:安裝fenics所需要的庫函數 第六步:安裝mshr包第七步:檢查安裝第八步:代碼可視化

衆所周知,Win10是最好的Linux發行版。通過Win10的WSL功能,可以輕松實作Linux系統的安裝與使用,基本可以滿足大部分人對Linux的需求。本文會詳細的介紹Ubuntu子系統的安裝與FEniCS的配置。

當然,如果你想要在虛拟機上安裝fenics,請移步另一篇部落格:https://blog.csdn.net/qq_40492373/article/details/105207726

第一步:将Ubuntu子系統安裝至非系統盤

網上有很多教程說讓通過微軟官方商店安裝ubuntu子系統,然後在用LxRunOffline工具将子系統從系統盤遷移至非系統盤。這樣的操作非常容易因其子系統的崩潰或是無法打開,下面我将介紹另一種方式直接将ubuntu子系統安裝至你想要安裝的地方。

啟用win10自帶的“适用于Linux的Windows子系統”功能

打開 程式面闆——程式——啟用或關閉Windows功能

在Win10的Ubuntu子系統中安裝FEniCS第一步:将Ubuntu子系統安裝至非系統盤第二步:更換國内源第三步:安裝Anaconda第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)第五步:安裝fenics所需要的庫函數 第六步:安裝mshr包第七步:檢查安裝第八步:代碼可視化

勾選“适用于Linux的Windows子系統”,确定

在Win10的Ubuntu子系統中安裝FEniCS第一步:将Ubuntu子系統安裝至非系統盤第二步:更換國内源第三步:安裝Anaconda第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)第五步:安裝fenics所需要的庫函數 第六步:安裝mshr包第七步:檢查安裝第八步:代碼可視化

 下載下傳Ubuntu子系統安裝包

前往微軟官方網站:https://docs.microsoft.com/en-au/windows/wsl/install-manual

找到相應的Linux發行版子系統安裝包,本文以Ubuntu18.04為例。

在Win10的Ubuntu子系統中安裝FEniCS第一步:将Ubuntu子系統安裝至非系統盤第二步:更換國内源第三步:安裝Anaconda第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)第五步:安裝fenics所需要的庫函數 第六步:安裝mshr包第七步:檢查安裝第八步:代碼可視化

 如果覺得直接通路微軟官網下載下傳速度過慢,也可以通路下方連結,我已經将子系統安裝包上傳作為免費下載下傳資源了。注意下載下傳後需要解壓

Ubuntu18.04安裝包:https://download.csdn.net/download/qq_40492373/20665510

Ubuntu20.04安裝包:https://download.csdn.net/download/qq_40492373/20665523

下載下傳完成後将安裝包(字尾名為:.appx)儲存在你希望安裝子系統的路徑上。

在非系統盤安裝Ubuntu18.04子系統

打開Windows PowerShell (管理者),用cd指令切換進入子系統安裝包所在路徑,并通過ls或者dir指令檢視安裝包是否存在,例如

cd E:\WindowsSubsystem\

dir
           
在Win10的Ubuntu子系統中安裝FEniCS第一步:将Ubuntu子系統安裝至非系統盤第二步:更換國内源第三步:安裝Anaconda第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)第五步:安裝fenics所需要的庫函數 第六步:安裝mshr包第七步:檢查安裝第八步:代碼可視化

 發現存在字尾名為.appx的檔案後,即可确認路徑正确。圖中可以看到我的安裝包名字為:Ubuntu.appx

以下部分内容引自微軟官方幫助文檔,由“仰望星空的螞蟻”翻譯。原文網址:https://docs.microsoft.com/en-au/windows/wsl/install-on-server

 對安裝包執行解壓縮:

在PowerShell中輸入如下指令:

Rename-Item .\Ubuntu.appx .\Ubuntu.zip  #修改檔案字尾使安裝包成為壓縮包
Expand-Archive .\Ubuntu.zip .\Ubuntu    #解壓縮至Ubuntu檔案夾
           

注意在自己安裝的過程中需要将檔案名“Ubuntu.appx”更改為自己安裝包的檔案名,通常可以通過輸入部分檔案名後按Tab鍵自動補全。

添加子系統路徑為環境變量

進入子系統路徑,将子系統路徑添加進入使用者環境變量。

複制如圖所示路徑

在Win10的Ubuntu子系統中安裝FEniCS第一步:将Ubuntu子系統安裝至非系統盤第二步:更換國内源第三步:安裝Anaconda第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)第五步:安裝fenics所需要的庫函數 第六步:安裝mshr包第七步:檢查安裝第八步:代碼可視化

進入進階系統設定——點選環境變量

在Win10的Ubuntu子系統中安裝FEniCS第一步:将Ubuntu子系統安裝至非系統盤第二步:更換國内源第三步:安裝Anaconda第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)第五步:安裝fenics所需要的庫函數 第六步:安裝mshr包第七步:檢查安裝第八步:代碼可視化

選中使用者變量中的Path項,點選編輯,在彈出的頁面中點選建立,輸入剛才複制的路徑,點選确定即可完成環境變量的添加。

在Win10的Ubuntu子系統中安裝FEniCS第一步:将Ubuntu子系統安裝至非系統盤第二步:更換國内源第三步:安裝Anaconda第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)第五步:安裝fenics所需要的庫函數 第六步:安裝mshr包第七步:檢查安裝第八步:代碼可視化

 當然追求高端的玩家也可以選擇在PowerShell中以指令行的形式添加環境變量,代碼如下:

$userenv = [System.Environment]::GetEnvironmentVariable("Path", "User") #擷取現有環境變量
[System.Environment]::SetEnvironmentVariable("PATH", $userenv + ";E:\WindowsSubsystem\Ubuntu", "User")  #在現有環境變量後增加一行路徑
           

 執行Ubuntu安裝

輕按兩下打開路徑中的Ubuntu1804.exe即可自動進入系統初始化過程

在Win10的Ubuntu子系統中安裝FEniCS第一步:将Ubuntu子系統安裝至非系統盤第二步:更換國内源第三步:安裝Anaconda第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)第五步:安裝fenics所需要的庫函數 第六步:安裝mshr包第七步:檢查安裝第八步:代碼可視化

或是在PowerShell中對應目錄以指令行形式運作Ubuntu1804.exe

.\Ubuntu1804.exe
           

 等待約5分鐘後,會要求輸入UNIX使用者名和密碼,注意輸入密碼時不會顯示輸入了什麼,但事實上已經輸入了,不要重複輸入即可。至此,子系統安裝完成。

注意:想要進入Ubuntu子系統同樣需要輕按兩下這個ubuntu1804.exe建議發送桌面快捷方式。

第二步:更換國内源

輕按兩下Ubuntu1804.exe進入根目錄,先備份源清單檔案

sudo mv /etc/apt/sources.list /etc/apt/sources.list.backup
           

然後通過nano寫入源清單檔案,這裡推薦南科大源

sudo nano /etc/apt/sources.list
           

複制下方源網址,在nano環境中用ctrl+u然後右鍵粘貼

deb https://mirrors.sustech.edu.cn/ubuntu/ bionic main restricted universe multiverse 
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-security main restricted universe multiverse 
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
           

然後用ctrl+O,回車儲存,ctrl+X退出編輯器,此時換源已經完成。

感謝南方科技大學開源軟體鏡像站(https://mirrors.sustech.edu.cn/),祝南方科技大學越辦越好。新 · 益求新,創 · 領未來。

如果遇到:無法鎖定管理目錄(/var/lib/dpkg/),是否有其他程序正占用它?

嘗試如下指令:

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
           

 注意:Ubuntu20.04不能應用南科大源和中科大源,建議采用阿裡雲源:

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
           

 完成換源候請習慣性對系統進行更新:

## 更新包清單
sudo apt update

## 更新安裝包
sudo apt upgrade

## 執行自動清理
sudo apt autoclean
           

第三步:安裝Anaconda

前往anaconda官網download頁面:https://www.anaconda.com/distribution/

下載下傳最新版的anaconda安裝檔案,Linux對應的檔案字尾名是.sh,複制進入自己現賬戶的根目錄(~/home/username/)

或者在終端直接輸入指令:

wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
           

然後打開終端,在其中輸入如下指令:

bash Anaconda3-2020.11-Linux-x86_64.sh
           

安裝的最後一步會詢問是否需要conda initiate程式進行配置,預設是no,這裡選擇yes。

如果需要将ubuntu中的預設python關聯為anaconda中的python,則在conda initiate步驟中選擇no并執行如下步驟:

安裝完成後在終端輸入:

sudo nano ~/.bashrc
           

在檔案最後添加:

export PATH="/home/xupp/anaconda3/bin:$PATH"
           

然後用ctrl+O,确認檔案名後回車儲存,ctrl+X退出編輯器後在終端輸入

source ~/.bashrc
           

重新開機終端

此時可以在終端中輸入python檢查是否安裝成功,如果出現如下所示的anaconda字樣說明安裝成功

(base)[email protected]:~$ python

Python 3.7.6 (default, Jan  8 2020, 19:59:22) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
           

如果不懂得如何安裝,可以參考https://blog.csdn.net/qq_15192373/article/details/81091098

重新開機終端後,使用者名前會出現(base)字樣,這是因為anaconda的base環境自啟動了,可以通過如下指令關閉base環境自啟動

## 永遠關閉base環境自啟動
conda config --set auto_activate_base false

## 隻關閉本次自啟動的base環境(事實上可以關閉任何已經進入的環境)
conda deactivate
           

此時,anaconda安裝完成。

第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)

将fenics安裝進入base環境(優先推薦)

直接将fenics架構安裝進入base環境中可以免去許多麻煩,例如:

  • spyder安裝進其他環境報錯的問題
  • 應用conda install安裝庫函數時可能出現的不相容問題(如下方第五步所講)

采用如下指令

## 關閉任何已經打開的環境
conda deactivate

## 打開base環境
conda base activate

## 更新conda,使其保持在最新版
conda update --all

## base環境下安裝fenics
conda install -c conda-forge fenics
           

将fenics安裝進入一個新的fenicsproject環境(不推薦)

執行如下指令:

conda create -n fenicsproject -c conda-forge fenics
           

等待安裝完成後,可以嘗試啟動該環境:

source activate fenicsproject
或
conda activate fenicsproject
           

每一次當你需要調用fenics時,都需要執行conda activate fenicsproject指令。

第五步:安裝fenics所需要的庫函數

## 安裝python的各種庫函數 numpy matplotlib pandas等
conda install numpy
conda install matplotlib
conda install pandas
           

一般情況下,anaconda新建立的fenicsproject環境會内置numpy庫函數,采用如下指令檢查是否已經内置

conda list
           

 第六步:安裝mshr包

注意此時應該在base環境中或者是在自己建立的fenicsproject環境中

##進入主目錄
cd ~

##從GitHub上拉取mshr包用作備份
git clone https://bitbucket.org/fenics-project/mshr


## 進入anaconda3目錄
cd anaconda3

## 從GitHub上克隆mshr包的源代碼
git clone https://bitbucket.org/fenics-project/mshr
           

然後開始編譯安裝mshr包,首先檢查cmake版本

## 檢查cmake版本
cmake --version
           

截至目前,cmake的版本是3.19.1,較低的cmake版本(例如低于3.10.1)可能會導緻後續報如下所示的錯誤

CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
           

如果這個報錯出現,那麼大機率是由于cmake版本過低導緻的,可以通過如下指令來解決。

sudo apt install cmake
           

在cmake版本沒有問題的情況下,執行如下代碼即可完成mshr包的安裝。

## 編譯安裝mshr包
cd mshr
mkdir build
cd build
cmake ..
sudo make install
           

其中cmake ..這一步容易出現問題,假如出現projram killed error,不要灰心,重新執行cmake ..指令即可。

如果在make install這一步中報如下所示錯誤,

Install the project...
-- Install configuration: ""
-- Installing: /usr/local/lib/libmshr.so.2019.2.0.dev0
CMake Error at cmake_install.cmake:60 (file):
  file INSTALL cannot copy file
  "/home/username/anaconda3/mshr/build/libmshr.so.2019.2.0.dev0" to
  "/usr/local/lib/libmshr.so.2019.2.0.dev0".
           

這是因為make安裝時需要管理者權限,可以采用在make install前面加sudo解決。但是這也同時産生了問題,那就是sudo建立的檔案,在本使用者下是無法通路的,這也就導緻build目錄下的install_manifest.txt無法被通路,是以當調用的時候會報找不到模組的錯誤。

在終端中執行如下指令:其中username為你的使用者名,chown的作用是改變檔案的所有者。

sudo chown username install_manifest.txt
           

至此,安裝結束

第七步:檢查安裝

首先需要重新開機WSL子系統,由于WSL是基于LxssManager服務運作的,是以可以通過重新開機LxssManager服務來重新開機WSL,步驟如下:

以管理者身份運作CMD

輸入如下代碼

## 關閉LxssManager服務
net stop LxssManager

## 重新開機LxssManager服務
net start LxssManager
           

此時已經完成了Ubuntu的重新開機,下面需要檢查mshr包何fenics是否安裝完成:在指令行中輸入如下指令:

## 激活環境
conda activate base
## 啟動python
python
## 檢查mshr包安裝情況
from mshr import *
## 檢查fenics安裝情況
form fenics import *
           

如果都沒有報錯,說明安裝成功。

第八步:代碼可視化

通路VS code官網 https://code.visualstudio.com/

下載下傳安裝VS code,在VS code的插件欄中安裝Remote - WSL插件

在Win10的Ubuntu子系統中安裝FEniCS第一步:将Ubuntu子系統安裝至非系統盤第二步:更換國内源第三步:安裝Anaconda第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)第五步:安裝fenics所需要的庫函數 第六步:安裝mshr包第七步:檢查安裝第八步:代碼可視化

 點選左下角的><圖示,選擇New WSL window即可進入Ubuntu子系統操作界面

在Win10的Ubuntu子系統中安裝FEniCS第一步:将Ubuntu子系統安裝至非系統盤第二步:更換國内源第三步:安裝Anaconda第四步:安裝FEniCS有限元架構主體(請看完這一部分再動手安裝)第五步:安裝fenics所需要的庫函數 第六步:安裝mshr包第七步:檢查安裝第八步:代碼可視化

 至此,寫代碼,運作程式都可以正常進行了。

繼續閱讀