Ubuntu20.04下安裝Python3.8.5虛擬環境


這篇文章主要介紹了ubuntu系統下Python虛擬環境的安裝和使用教程。
python3.8.5安裝請參考博文:https://www.cnblogs.com/netflix/p/15026768.html
本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

前言:進行python項目開發的時候,由於不同的項目需要使用不同的資源包和相關的配置,因此創建多個python虛擬環境,在虛擬環境下開發就顯得很有必要。

安裝虛擬環境

可以使用pip安裝,前提是安裝了pip,一般python自帶了pip

sudo pip install virtualenv
sudo pip install virtualenvwrapper

說明:安裝的結果一模一樣,使用任意一種即可。
virtualenv是虛擬環境,virtualenvwrapper對virtualenv的命令進行了封裝,使得其更加友好。
注意:安裝的順序不能顛倒,virtualenvwrapper必須依賴於virtualenv。

創建虛擬環境

  • 在終端輸入如下命令:  mkvirtualenv 虛擬環境名稱
如: mkvirtualenv mywork    //會創建一個名為mywork的虛擬環境
創建的虛擬環境都保存在  /home/.virtualenvs  目錄下,可以進入這個目錄查看;
創建成功后會自動進入該虛擬環境,命令行提示改變;
  • 指定python版本創建虛擬環境:    mkvirtualenv -p python路徑 虛擬環境名稱
上面的命令執行時,系統會創建默認的python版本的開發環境,一般大家的電腦會同時安裝python2和python3版本,有時需要不同的版本創建虛擬環境。
例:  mkvirtualenv -p /usr/bin/python3 mywork
 -p 指的是path的簡寫Py安裝的路徑,默認安裝在/usr/bin/目錄下;
如果一時間找不到,使用命令:  whereis python3
在終端命令行搜索,會出現想要的路徑。

細節:不需要進入到/home/.virtualenvs目錄,在任何目錄下都可以執行命令,創建的虛擬環境的位置都一樣。
注意:創建虛擬環境是需要在聯網下進行,否則創建失敗。
注意:使用mkvirtualenv創建虛擬環境,可能提示找不到命令,一般是腳本文件沒有加入系統路徑,解決如下:

方法一:

# 找到virtualenvwrapper的腳本文件 
whereis virtualenvwrapper
# 進入該目錄 
cd /usr/local/python3/bin
# 執行腳本文件激活 virtualenvwrapper  
source virtualenvwrapper.sh
# 可以正常使用命令了

方法二:

# 方法一每次重啟后都需要手動激活,不方便,將命令添加到環境變量
sudo vi ~/.bashrc
# 在末尾添加一行
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
# 保存后執行
source ~/.bashrc
# 現在可以正常使用命令了,且每次重啟主機自動加載命令

如何解決ubuntu系統下source: not found錯誤?

若在ubuntu系統下運行含有source命令的shell腳本時,出現source: not found錯誤,原因可能是shell的解釋器不是bash,需把shell的解釋器更改為bash。

  • 請按以下步驟更改shell的解釋器:
    執行ls -l /bin/sh命令,若得到結果/bin/sh -> dash,則說明shell的解釋器為dash。
    執行dpkg-reconfigure dash命令,然后選擇no。
    注意 此步驟需要root權限。
    再次執行ls -l /bin/sh命令,若得到結果/bin/sh -> bash,則說明成功更改shell的解釋器為bash。

如何解決ubuntu系統下Command ' ' not found, but can be installed with:錯誤?

由於在ubuntu20.04環境下,將python做與python3.8做了軟鏈接(ln -s python python3.8),並且pip也被我做了軟鏈接,所以導致用pip安裝virtualenvwrapper之后,在source啟動virtualenvwrapper.sh時以及workon 虛擬環境時總是報錯:

root@ubuntu:~# source ~/.bashrc

Command '' not found, but can be installed with:

apt install mailutils-mh  # version 1:3.7-2.1, or
apt install meshio-tools  # version 4.0.4-1
apt install mmh           # version 0.4-2
apt install nmh           # version 1.7.1-6
apt install termtris      # version 1.3-1

virtualenvwrapper.sh: There was a problem running the initialization hooks.

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON= and that PATH is
set properly.

結合錯誤信息與提示找到的語句,猜測應該是VIRTUALENVWRAPPER_PYTHON這里有問題,然后在virtualenvwrapper.sh文件中查找VIRTUALENVWRAPPER_PYTHON,發現了關鍵點:

# 47行
# Locate the global Python where virtualenvwrapper is installed.
if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
then
    VIRTUALENVWRAPPER_PYTHON="$(command \which python3)"
fi

VIRTUALENVWRAPPER_PYTHON是用來(Locate the global Python where virtualenvwrapper is installed.)定位哪個python下面安裝了virtualenvwrapper的。原本指定的位置是python,也就是2.7版本的。鑒於之前我使用python3.8安裝的,所以此處要改成python3。然后這個錯誤就消失了。

root@ubuntu:~# source ~/.bashrc
virtualenvwrapper.user_scripts creating /root/.virtualenvs/premkproject
virtualenvwrapper.user_scripts creating /root/.virtualenvs/postmkproject
virtualenvwrapper.user_scripts creating /root/.virtualenvs/initialize
virtualenvwrapper.user_scripts creating /root/.virtualenvs/premkvirtualenv
virtualenvwrapper.user_scripts creating /root/.virtualenvs/postmkvirtualenv
virtualenvwrapper.user_scripts creating /root/.virtualenvs/prermvirtualenv
virtualenvwrapper.user_scripts creating /root/.virtualenvs/postrmvirtualenv
virtualenvwrapper.user_scripts creating /root/.virtualenvs/predeactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/postdeactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/preactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/postactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/get_env_details
# 虛擬環境搭建測試完畢。。。

虛擬環境的查看和使用

  • 創建虛擬環境 mkvirtualenv -p python版本 [虛擬環境名稱]
ubuntu@ubuntu:~$ mkvirtualenv -p /usr/bin/python3 python361
created virtual environment CPython3.6.1.final.0-64 in 1058ms
  creator CPython3Posix(dest=/home/ubuntu/.virtualenvs/python361, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, wheel=bundle, setuptools=bundle, via=copy, app_data_dir=/home/ubuntu/.local/share/virtualenv)
    added seed packages: pip==21.1.3, setuptools==57.1.0, wheel==0.36.2
  activators PythonActivator,FishActivator,XonshActivator,CShellActivator,PowerShellActivator,BashActivator
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/python361/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/python361/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/python361/bin/preactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/python361/bin/postactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/python361/bin/get_env_details
  • 刪除虛擬環境 rmvirtualenv [虛擬環境名稱]
ubuntu@ubuntu:~$ rmvirtualenv mywork
注意:如果目前的位置在虛擬環境中,需要先退出虛擬環境,然后才能執行刪除
 注意:可以在任何目錄執行刪除操作,如果不知道名字,可以rmvirtualen + 兩次Tab鍵,提示所有的虛擬環境
  • 進入虛擬環境   workon [虛擬環境名稱]
ubuntu@ubuntu:~$ workon python361
(python361) ubuntu@ubuntu:~$ 
注意:按workon+兩次Tab鍵會提示所有虛擬環境。
  • 退出虛擬環境   deactivate
(python361) ubuntu@ubuntu:~$ deactivate 
ubuntu@ubuntu:~$
  • 查看虛擬環境中安裝的python包
pip list
pip freeze

說明

兩個命令都可以查詢,只是展示的形式不一樣。
- 在虛擬環境下安裝python包
	進入虛擬環境,在終端輸入:  pip install 包的名字
	注意:一定不要使用sudo pip ... ,這里是在虛擬環境中安裝python包
	如果使用了sudo權限,python包會被安裝在主機非虛擬環境下,在虛擬環境中找不到這個包

總結

以上所述是小編給大家介紹的ubuntu系統下Python虛擬環境的安裝和使用教程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM