Python虛擬環(huán)境遷移實(shí)踐
Python虛擬環(huán)境遷移
在工作中會(huì)使用python制作一些工具,但是python不同版本的兼容性較差,然而有時(shí)不得更換電腦,使原python腳本運(yùn)行時(shí)經(jīng)常會(huì)發(fā)生一些問題,因此想制作一個(gè)可以遷移的python虛擬環(huán)境。
但是,直接將虛擬環(huán)境遷移到另一臺(tái)電腦,甚至在同一臺(tái)電腦上移動(dòng)虛擬環(huán)境位置,運(yùn)行python都會(huì)發(fā)生問題。
常規(guī)的解決方案[1]是生成requirements.txt后在另一臺(tái)電腦上安裝,如下。
activate需要打包的虛擬環(huán)境,在對(duì)應(yīng)目錄下創(chuàng)建一個(gè)文件夾whl,并新建requirements.txt文件,進(jìn)入whl文件夾
pip freeze --all > requirements.txt
- 這樣需要安裝的依賴庫就總結(jié)在requirements里面,將符合條件的庫進(jìn)行打包
pip download -r requirements.txt
- 需要安裝的文件就全部在
whl文件夾里面了。在目標(biāo)機(jī)器上新建一個(gè)虛擬環(huán)境,考慮另外一臺(tái)機(jī)器是否接網(wǎng)的問題,有兩種策略。 - 有網(wǎng)的話,直接拷貝
requirements.txt進(jìn)行在線安裝
pip install -r requirements.txt
- 沒網(wǎng)時(shí)將
whl文件夾全部拷到虛擬環(huán)境下進(jìn)行安裝
pip install --no-index --find-links=. -r requirements.txt
此種方案并不能實(shí)現(xiàn)我想要的遷移后直接使用的功能,因此實(shí)踐出來了可以在本機(jī)任意移動(dòng)虛擬環(huán)境,并可以遷移到和原電腦相同系統(tǒng)的電腦后直接activate使用的方案。
注意:
- 本方案目前只針對(duì)
Ubuntu系統(tǒng),尚未對(duì)Windows系統(tǒng)進(jìn)行實(shí)踐; - 電腦間遷移,電腦的系統(tǒng)必須相同,不同版本的
Ubuntu系統(tǒng)間遷移尚在實(shí)踐中。
1. venv工具安裝
sudo apt-get install python3-venv
2. 創(chuàng)建python虛擬環(huán)境
mkdir venv-python python3 -m venv venv-python
3. 自動(dòng)獲取虛擬環(huán)境遷移位置
在venv-python/bin/activate腳本中,變量VIRTUAL_ENV為初始安裝的python虛擬環(huán)境位置,即VIRTUAL_ENV="venv-python"。
在遷移python虛擬環(huán)境后需要自動(dòng)獲取文件位置,修改腳本。
workdir=$( dirname $( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) )
VIRTUAL_ENV="${workdir}"
export VIRTUAL_ENV
4. 修改腳本默認(rèn)解釋器
在venv-python/bin/中的腳本文件中,設(shè)置的使用的python3解釋器是虛擬環(huán)境安裝時(shí)的python3文件路徑,需要修改路徑為遷移后的位置。
filesdir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
python_interpreter="#!${filesdir}/python3"
for file in `ls ${filesdir}`
do
if [ ${file:0:6} = "python" ];
then
:
elif [ ${file:0:8} = "activate" ];
then
:
else
:
read_file="${filesdir}/${file}"
sed -i "1c ${python_interpreter}" ${read_file}
fi
done
5. 修改python連接
在venv-python/bin/中python3軟連接到/usr/bin/python3,而/usr/bin/python3軟連接到/usr/bin/python3.6。
為了遷移后使用虛擬環(huán)境中的python,需要拷貝python庫文件和修改軟連接。
sudo cp /usr/bin/python3.6 venv-python/bin/ ln -snf python3.6 python3
通過上述操作就可以將python虛擬環(huán)境遷移到本機(jī)其他位置或者其他相同系統(tǒng)的機(jī)器上直接使用了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python版本坑:md5例子(python2與python3中md5區(qū)別)
這篇文章主要介紹了python版本坑:md5例子(python2與python3中md5區(qū)別),需要的朋友可以參考下2017-06-06
Python使用PyCrypto實(shí)現(xiàn)AES加密功能示例
這篇文章主要介紹了Python使用PyCrypto實(shí)現(xiàn)AES加密功能,結(jié)合具體實(shí)例形式分析了PyCrypto實(shí)現(xiàn)AES加密的操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05
Python基礎(chǔ)Lists和tuple實(shí)例詳解
這篇文章主要為大家介紹了Python基礎(chǔ)Lists和tuple實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
PyTorch中torch.load()的用法和應(yīng)用
torch.load()它用于加載由torch.save()保存的模型或張量,本文主要介紹了PyTorch中torch.load()的用法和應(yīng)用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03

