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

熱線電話:13121318867

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

作者:Python進階者

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

前言

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

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

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

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

所以呀,能用純Python就用純Python,別瞎搞!??!

遇到的問題

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

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

界面如下

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

使用

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

1. 安裝Python

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

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

記得打上Add Python ... PATH這個選項,剩下的就不用我多說了吧?。?!

安裝完畢cmd運行Python,如下表示沒得問題。

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

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

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

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

3. 使用python管理器

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

剛進入首先依次點擊前三個

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

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

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

依次點擊完之后,再次打開,就沒有上述報錯了。

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

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

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

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

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

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

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

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

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

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

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

想刪除哪個直接刪除就好了,也省心了

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

總結(jié)

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

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

數(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(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 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){ //倒計時完成 $(".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); }