python 创建目录_Python虚拟环境的搭建与使用
前言
在開發(fā)中很多時候不同的項目會需要用的不同版本的包,甚至是不同版本的Python,而使用虛擬環(huán)境就可以輕松解決問題。虛擬環(huán)境通過創(chuàng)建一個全新的Python開發(fā)環(huán)境,從而實現(xiàn)不同項目間的隔離。
虛擬環(huán)境的搭建
我們先安裝最基礎(chǔ)的包virtualenv:
pip install virtualenv然后安裝virtualenvwrapper,它是基于virtualenv的擴展包,擴展包括創(chuàng)建和刪除虛擬環(huán)境以及管理開發(fā)工作流的功能。
(1)如果是Windows OS則安裝virtualenvwrapper-win:
pip install virtualenvwrapper-win(2)如果是Linux OS則安裝virtualenvwrapper:
pip install virtualenvwrapperWindows OS安裝后需要設(shè)置環(huán)境變量才可使用,不過相比Linux下的設(shè)置已經(jīng)顯得相當(dāng)?shù)目旖荨N覀冎恍枰獎?chuàng)建兩個環(huán)境變量:WORKON_HOME和PROJECT_HOME,路徑設(shè)定完成后就可以開始使用了。
Linux OS下安裝完后無法直接使用,如果你期待的輸入命令,你會得到一條令人沮喪的消息
日常報錯使用前我們還需要修改環(huán)境配置文件,在.bashrc或.profile文件中加入三行代碼:
export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/Devel source /usr/local/bin/virtualenvwrapper.sh參數(shù)說明:
- WORKON_HOME:表示存放虛擬環(huán)境的位置
- PROJECT_HOME:表示項目工作目錄的位置(使用mkproject命令時會用到)
- source:待載入Shell文件的路徑
source指向后綴為sh的腳本文件,在這里需要的是virtualenvwrapper.sh。同時要注意,不同系統(tǒng)中的路徑可能不一樣,find命令可以幫助我們找到需要的文件:
find / -name virtualenvwrapper.sh上述命令表示在根目錄下進(jìn)行查找(即全盤查找)名為virtualenvwrapper.sh的文件,我查找的結(jié)果是/usr/bin/virtualenvwrapper.sh,所以我的source項就填寫這個。
find大法好在這里我用的是vi編輯器,鍵入命令vi ~/.bashrc就可以開始編輯了 。
編輯完后執(zhí)行source ~/.bashrc重新加載配置文件即可正常使用命令。順帶一提,配置文件重新加載后會自動創(chuàng)建.virtualenvs文件夾,卻不會自動創(chuàng)建Devel文件夾,所以還是需要使用mkdir $HOME/Devel手動創(chuàng)建文件夾。
虛擬環(huán)境的使用方法
這里僅重點介紹virtualenvwrapper的常用命令。
mkvirtualenv
在WORKON_HOME目錄中創(chuàng)建一個新的虛擬環(huán)境。
mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] ENVNAME參數(shù)說明:
- -i:指定一個或多個包
- -a:指定一個項目目錄,用于將該虛擬環(huán)境綁定至一個現(xiàn)有項目
- -r:指定一個requirements文件,一般是由pip freeze所生成的,里面包括了需要用到的所有包
- virtualenv options:參數(shù)將直接傳遞給virtualenv,詳情參閱virtualenv官方文檔
例如mkvirtualenv env會創(chuàng)建一個名為env的虛擬環(huán)境并激活,之后pip安裝的所有包都僅僅存在于這個環(huán)境中。
處于“env”虛擬環(huán)境下的命令行帶有(env)的前綴mkproject
在PROJECTHOME目錄中創(chuàng)建項目目錄同時在WORKON_HOME目錄下創(chuàng)建同名虛擬環(huán)境。
mkproject [-f | --force] [-t template] [virtualenv_options] ENVNAME例如mkproject env會創(chuàng)建一個名為env的項目目錄,同時被創(chuàng)建的還有它的同名虛擬環(huán)境,當(dāng)前虛擬環(huán)境會被切換到新的虛擬環(huán)境,當(dāng)前工作目錄也會改變?yōu)樾碌捻椖磕夸洝?/p>
setvirtualenvproject
將現(xiàn)有的虛擬環(huán)境綁定到現(xiàn)有的項目。
setvirtualenvproject [virtualenv_path project_path]如果不指定參數(shù),則默認(rèn)為當(dāng)前虛擬環(huán)境和當(dāng)前目錄作為參數(shù),單個項目可以綁定多個虛擬環(huán)境,從而可以輕松地在不同的Python版本或依賴之間切換以進(jìn)行測試。
rmvirtualenv
刪除WORKON_HOME中的虛擬環(huán)境。
rmvirtualenv ENVNAME例如mkvirtualenv env將會刪除虛擬環(huán)境env。
workon
列出所有虛擬環(huán)境或更改當(dāng)前工作中的虛擬環(huán)境。
workon [(-c|--cd)|(-n|--no-cd)] [environment_name|"."]- 命令workon會列出所有可用的虛擬環(huán)境
- 命令workon env將會切換當(dāng)前虛擬環(huán)境到虛擬環(huán)境env
deactivate
退出當(dāng)前虛擬環(huán)境。
deactivate還有許多其他的命令,詳情參閱virtualenvwrapper 4.8.3.dev4,以下僅列出一部分:
- mktmpenv:創(chuàng)建一個臨時的虛擬環(huán)境,停用后將會自動被清除
- lsvirtualenv:列出所有可用環(huán)境
- showvirtualenv:顯示單個虛擬環(huán)境的詳細(xì)信息
- cdvirtualenv:將當(dāng)前工作目錄更改為虛擬環(huán)境的存放目錄,可導(dǎo)航到子目錄
- cdproject:將當(dāng)前工作目錄更改為活動的虛擬環(huán)境所綁定的項目目錄的目錄
- wipeenv:刪除當(dāng)前虛擬環(huán)境中所有已安裝的第三方軟件包
虛擬環(huán)境的使用實例
Python版本的的切換
我所使用的是Linux系統(tǒng),自帶Python2.7,許多軟件包都會依賴?yán)习姹镜腜ython,如果為了Python3.7覆蓋原來的版本,那么很多軟件可能會無法使用,這時可以通過參數(shù)-p來切換Python版本,-p后為指定的Python解釋器:
mkvirtualenv -p /usr/local/python3.7/bin/python3 py3env1這里我將Python3.7安裝在了/usr/local/python3.7/目錄下,根據(jù)不同的安裝方式路徑可能會有所不同。win7(64bit)下-p命令需要指定到python.exe 。
Python3.7的虛擬環(huán)境不同系統(tǒng)之間的項目轉(zhuǎn)移
在虛擬環(huán)境中進(jìn)行開發(fā),最后使用pip freeze > requirements.txt將依賴包的信息進(jìn)行保存,可以看到目錄下會多出requirements.txt文件。將項目目錄轉(zhuǎn)移至目的系統(tǒng)后,重建并激活虛擬環(huán)境(Python版本需一致),在項目目錄下執(zhí)行命令pip install -r requirements.txt即可獲得與之前開發(fā)時相同的依賴包和相同的環(huán)境。
一些疑問
其實我有個疑問,win版本和非win版本有什么區(qū)別,經(jīng)過測試是都可以安裝成功的(Windows OS),但是在僅安裝virtualenvwrapper的情況下無法使用命令。在我卸載virtualenvwrapper-win的時候看到了些類似workon.bat的文件,推測win版本把命令用批處理實現(xiàn)了,相較而言Linux下的配置則要更為復(fù)雜。
卸載virtualenvwrapper-win時的部分回顯題圖Pixiv ID:70023635 | pip - pip 18.0 documentation | virtualenvwrapper 4.8.3.dev4 Virtualenv - virtualenv 16.0.0 documentation
總結(jié)
以上是生活随笔為你收集整理的python 创建目录_Python虚拟环境的搭建与使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7 ifconfig命令找不
- 下一篇: python开发闹钟_「玩转树莓派」为女