99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種
盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種
2022-01-26
收藏

作者:Python進(jìn)階者

來源:Python爬蟲與數(shù)據(jù)挖掘

前言

Hey,大家好,我是碼農(nóng)星期八。

事情是這樣子的,原來我一直使用的conda,用conda來進(jìn)行隔離環(huán)境,但是裝了一個(gè)東西也需要用到Python,奇怪的問題發(fā)生了,conda自帶的Python怎么和那個(gè)軟件結(jié)合都不行。

經(jīng)過了一波操作之后發(fā)現(xiàn),單獨(dú)安裝Python解釋器使用是沒有問題的,使用conda帶的Python就不行,唉,扯淡的青春。

經(jīng)過了一波操作還是老老實(shí)實(shí)卸載了conda,單獨(dú)裝上了Python解釋器,使用virtualenvwrapper來進(jìn)行虛擬環(huán)境隔離。

所以呀,能用純Python就用純Python,別瞎搞?。。?/span>

遇到的問題

其實(shí)來說使用virtualenvwrapper+virtualenvwrapper-win也是挺好實(shí)現(xiàn)虛擬環(huán)境創(chuàng)建和刪除等操作的,但是我得記啊,而且命令還那么長。。。對于我這種懶人來說,有點(diǎn)難頂。

所以卷了一下,寫了一個(gè)簡陋的Python虛擬環(huán)境管理器,在此分享給大家。

界面如下

盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種

使用

本次將從一個(gè)小白的角度,使用一下這個(gè)虛擬環(huán)境管理器,那就開始吧。

1. 安裝Python

本次使用的Python解釋器版本是3.8.6,64位版本的,自行下載,將安裝包拖入win7虛擬機(jī)中。。。進(jìn)行安裝。

盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種

記得打上Add Python ... PATH這個(gè)選項(xiàng),剩下的就不用我多說了吧?。?!

安裝完畢cmd運(yùn)行Python,如下表示沒得問題。

盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種

2. 創(chuàng)建WORKON_HOME系統(tǒng)變量

所有的虛擬環(huán)境都放在WORKON_HOME目錄下,所以需要?jiǎng)?chuàng)建一個(gè)系統(tǒng)變量,用來組織它。

盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種

3. 使用python管理器

上述步驟完成之后,就可以開始玩python虛擬環(huán)境管理了。

剛進(jìn)入首先依次點(diǎn)擊前三個(gè)

  • 1.更新pip
  • 2.永久換源
  • 3.安裝虛擬環(huán)境包

剛進(jìn)入可能會提示不是內(nèi)部或外部命令,不必理會。

盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種

依次點(diǎn)擊完之后,再次打開,就沒有上述報(bào)錯(cuò)了。

盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種

3.1 創(chuàng)建環(huán)境

這個(gè)本質(zhì)就是使用了mkvirtualenv <env>命令。

盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種

點(diǎn)擊確定,等待一會,就有了一個(gè)環(huán)境。

盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種

3.2 進(jìn)入指定環(huán)境

本質(zhì)是workon <env>命令,點(diǎn)擊一下想要進(jìn)入的環(huán)境,點(diǎn)擊進(jìn)入,直接彈出一個(gè)cmd并且已經(jīng)進(jìn)入了指定的虛擬環(huán)境,想用pip的話又省心一步。

盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種

3.2 刪除指定環(huán)境

本質(zhì)是rmvirtualenv <env>命令

想刪除哪個(gè)直接刪除就好了,也省心了

盤點(diǎn)一款自研的Python虛擬環(huán)境管理器——帶GUI界面的那種

總結(jié)

做這個(gè)玩具,純屬是為了娛樂,也是為了方便自己和同道中人,你還可以發(fā)現(xiàn)甚至樣式還有點(diǎn)亂,但是我在win10上看是好好的,不知道為什么到win7就成這樣子了,問題不大,仁者見智唄!

如果在操作過程中有任何問題,記得下面留言,我們看到會第一時(shí)間解決問題。越努力,越幸運(yùn)。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }