關于虛擬環境中遇到的bug

conda和cmd介紹

介紹

Conda

  1. 概述

    • Conda是一個開源包管理系統和環境管理系統,尤其適用于Python和R語言的開發環境。
    • 它允許用戶創建獨立的虛擬環境,方便地管理依賴包和軟件版本。
  2. 特點

    • 環境管理:可以創建、導入、導出和刪除獨立的環境。這對不同項目使用不同依賴版本時非常有用。
    • 包管理:支持安裝、更新和卸載包,能夠解決包之間的依賴關系。
    • 跨平臺:支持在Windows、Unix和MacOS上運行。
  3. 優點

    • 避免軟件包版本沖突。
    • 簡化科學計算和數據分析中的軟件管理。
    • 有大量的預編譯包,方便安裝(如NumPy、Pandas、SciPy等)。

CMD

  1. 概述

    • CMD(命令提示符)是Windows操作系統的一個命令行解釋器,用于執行操作系統命令和腳本。
    • 主要用于進行文件管理、程序執行、系統設置等低級操作。
  2. 特點

    • 命令行界面:用戶通過輸入文本命令來與操作系統進行交互。
    • 操作范圍:可以調用系統命令、批處理文件、運行可執行程序等。
  3. 優點

    • 強大的文件管理功能。
    • 可以執行各類批處理腳本,進行自動化任務。
    • 適合具備命令行操作經驗的用戶。

區別

  • 用途

    • Conda專注于包和環境管理,特別是在數據科學和機器學習領域。
    • CMD用于操作系統級別的任務,如文件管理和系統配置。
  • 運行環境

    • Conda在其環境中運行,使用特定的Python和依賴。
    • CMD是全系統的命令行界面,不限于特定的編程語言。

界面

conda

cmd

虛擬環境

Bash和創建的虛擬環境

Bash

  1. 概述

    • Bash(Bourne Again SHell)是一個Unix Shell,廣泛用于Linux和MacOS等操作系統中。
    • 它是一種命令行解釋器,允許用戶通過文本命令與操作系統進行交互。
  2. 功能

    • 命令行操作:執行文件和程序、管理文件系統、運行腳本等。
    • 編程功能:支持條件語句、循環、函數等,可以編寫復雜的腳本來自動化任務。
    • 環境管理:可以設置和使用環境變量,影響運行在該Shell中的程序的行為。
  3. 特點

    • 跨平臺(在多種Unix/Linux環境中運行)。
    • 基本上用于與操作系統的交互,而不是專注于特定的編程語言環境。

創建的虛擬環境

  1. 概述

    • 虛擬環境是用于創建隔離的、獨立的Python運行環境的工具,可以用venvvirtualenvconda等命令創建。
    • 每個虛擬環境都有自己的Python解釋器和依賴包,互不干擾。
  2. 功能

    • 隔離依賴:可以為每個項目安裝特定版本的包,避免包之間的沖突。
    • 簡化部署:便于在不同項目中維護不同的依賴和庫,而不影響全局Python環境。
  3. 特點

    • 創建的虛擬環境是特定于Python的,與特定的Python版本和依賴包綁定。
    • 適用于Python開發者,特別是在進行數據科學、機器學習等項目時

注意

cmd和conda

cmd和conda可以比喻成window下的兩個兄弟,cmd是大哥,conda是二哥,cmd中的python和conda中的python是兩個東西

bash和conda中創建的虛擬環境

bash和conda中創建的虛擬環境可以比喻成父子,bash的python是老爸,conda虛擬環境中的python是兒子,其實在bash中,我們默認下載的python,他就會放在一個全局的環境當中,我們pip下載的庫,也會放在一個全局的環境當中,當全局環境中包下載過多,就會造成一些版本的沖突。我們可以把bash和conda比喻成兩個文件夾,bash的python用的是bash中的庫,conda的python用的是conda的庫,兩者互不干擾。

jupyternotebook

我們會使用pip jupyter notebook下載,但是如果你在cmd中(不是虛擬環境)下載,他就會創建一個jupyter,相當于一個全局jupyter,如果你在conda(不是虛擬環境)中下載,他就會在conda中創建一個jupyter,相當于在conda中的一個全局jupyter。所以我們可以創建一個虛擬環境,虛擬環境中啟動jupyter notebook,會使用虛擬環境中的內核

內核

在Jupyter Notebook中,**內核(Kernel)**是一個重要的概念,它負責執行代碼和處理用戶輸入。具體來說,內核是一個與用戶的代碼執行環境,它連接到Jupyter Notebook,以便處理用戶的代碼請求并返回結果。

虛擬環境的使用

cmd中

創建虛擬環境

pip virtualenv 這個要自己下載

virtualenv -p python解釋器路徑  名字(虛擬環境的名字)# -p python解釋器路徑       # 虛擬環境使用指定版本的python解釋器
# 例:virtualenv -p D:\Python\Python39\python.exe env# --system-site-packages    # 指定虛擬環境繼承系統的三方庫
# 添加這個參數:檢索庫的時候,在當前虛擬環境找不到,會到系統的三方庫中查找
# 不加這個參數:檢索庫的時候,只會在當前的虛擬環境中查找
# 例:virtualenv --system-site-packages env# 注意:通過系統python環境創建虛擬環境的時候,并不會將系統python環境中安裝的第三方庫安裝到虛擬環境中

創建虛擬環境

1、創建項目文件夾
2、cmd命令行工具,進入到項目文件夾
3、執行命令:
virtualenv env_name
# 如:virtualenv env

激活虛擬環境

# cmd命令行工具,進入到虛擬環境下的Scripts目錄
# 執行命令:
activate  或者 activate.bat# 執行之后,可以看到cmd命令工具中的路徑前面多了一個標識:(env_name)
# 例:(env) C:\Users\Administrator\Desktop\MyPro02\env\Scripts>
# 此時,就是進入到了虛擬環境中,接下來所有的操作都是在當前虛擬環境中

操作虛擬環境

pip install requests# 如果不激活創建的虛擬環境,庫會被安裝到全局環境;# 激活虛擬環境后,則會安裝在虛擬環境中python test.py# 使用虛擬環境中的python解釋器執行test.py文件# 如果test.py文件中導入了某個包,會優先到虛擬環境中去查找相關的包

退出虛擬環境

# cmd命令行工具,進入到虛擬環境下的Scripts目錄
# 執行命令
deactivate 或者 deactivate.bat# 退出虛擬環境之后,cmd命令工具中的路徑前面的標識(env_name)會消失

刪除虛擬環境

直接刪除虛擬環境的文件夾

conda

conda常用的代碼

conda -V                                        # 查看版本(V是大寫)
conda create -n env_name python=3.9             # 創建python虛擬環境(指定python版本)
conda create -n env_name2 --clone env_name1     # 克隆虛擬環境
conda create -n env_name python=3.9 包名=x.x    # 創建虛擬環境的同時安裝指定版本的三方庫
conda create -p /projects/envs/myenv python=3.9 #在指定的路徑下創建虛擬環境conda activate env_name                         # 切換/激活虛擬環境,Linux系統前面要加source
conda deactivate                                # 退出虛擬環境conda config --show                             # 查看虛擬環境默認位置
conda install 包名=version                      # 在base環境中安裝包
conda install -n env_name 包名                  # 在指定虛擬環境安裝包
activate env_name                               # 激活虛擬環境,Linux系統前面要加source
conda remove -n env_name --all                  # 移除虛擬環境及所有包
conda remove env_name 包名                      # 移除指定虛擬環境中的某個包
conda env list                                  # 查看虛擬環境列表
conda list                                      # 查看base環境包列表

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71223.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71223.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71223.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于nginx的灰度發布解決方案

Nginx 在灰度發布中可以看作是一個精確的流量調度員,它充當著客戶端與后端服務器之間的中介。通過配置好的規則,Nginx 會將用戶請求智能地引導到不同版本的服務上。這樣,Nginx 可以根據具體需求靈活地分配流量,確保新版本逐步推向…

網絡安全法與等級保護 PPT 精華匯總

資源描述 本資源文件為《網絡安全法與等級保護》的PPT精華匯總,內容涵蓋了網絡安全法與等級保護的總體框架及相關標準規范。該PPT詳細介紹了網絡安全法與等級保護的各個章節和條款,并提供了基礎類和應用類的相關標準文件,幫助讀者全面了解和…

uni-app開發安卓和iOS 打包流程(云打包)

首先講一下安卓打包的流程,之后再說ios。打包安卓和iOS打包的流程有些不同,安卓打包相對來說比較簡單,而iOS打包需要更多的準備工作,如申請開發者賬號、生成證書等。 一、安卓打包 1、安卓打包直接在window電腦上就可以操作,打開hbuilderx,找到你的項目選中,然后點擊發…

攝像頭應用編程(四):ARM Linux LCD實時預覽UVC攝像頭畫面

文章目錄 1、前言2、環境介紹3、步驟4、應用程序編寫4.1、lcd初始化4.2、攝像頭初始化4.3、jpeg解碼4.4、開啟攝像頭4.5、完整的程序如下 5、測試5.1、編譯應用程序5.2、運行應用程序 6、總結 1、前言 本次應用程序主要針對支持MJPEG格式輸出的UVC攝像頭。 2、環境介紹 rk35…

藍橋與力扣刷題(藍橋 k倍區間)

題目:給定一個長度為 N 的數列,A1,A2,?AN?,如果其中一段連續的子序列 Ai,Ai1,?Aj( i≤j ) 之和是 K 的倍數,我們就稱這個區間[i,j] 是 K 倍區間。 你能求出數列中總共有多少個 K 倍區間嗎? 輸入描述 第一行包含兩…

json介紹、python數據和json數據的相互轉換

目錄 一 json介紹 json是什么? 用處 Json 和 XML 對比 各語言對Json的支持情況 Json規范詳解 二 python數據和json數據的相互轉換 dumps() : 轉換成json loads(): 轉換成python數據 總結 一 json介紹 json是什么? 實質上是一條字符串 是一種…

PAT乙級真題 / 知識點(1)

引言: 起初,報PAT是伙伴推薦。但在報名路途中,有朋友說,花時間到這上面不值得,還有學長說沒聽過,野雞杯。 我一笑而過,我可能就是偏執,我就是想報。隨著刷真題,我的基礎…

單細胞分析(20)——inferCNV分析

InferCNV分析筆記 1. 分析目標 InferCNV(Inference of Copy Number Variations)是一種基于單細胞轉錄組數據推斷**拷貝數變異(CNV)**的方法,推測其基因組變異情況。 2. 數據準備 2.1 載入數據 library(Seurat) set…

C++:多態與虛函數

1.虛函數,在函數前加virtual即可。有虛函數時,父類指針指向父類對象時就會使用父類的成員,指向子類對象時就可以使用子類成員,進而我們引入了多態的概念。 2.多態:父類指針指向子類的對象,通過父類指針調用…

WSL下使用git克隆失敗解決

WSL默認nat模式,別動了防火墻放行,見圖1git導入[bash1],ip為你wsl上linxu通過ifconfig獲取的本機ip,端口對好某alcsh軟件開啟tun模式【經過測試,不開也行】應該成了,如果不行,修改.wslconfig為下…

開放鴻蒙OpenHarmony 5.0.0 Release 兼容性測試實戰經驗分享

OpenHarmony 5.0版本的發布時間是2024年12月20日至21日。這個版本帶來了許多新特性和改進。現在5.0出了兩個release 版本,分別是5.0.0和5.0.1。 就在5.0版本發布不到2周的時間內,2025年01月01日起,不支持新產品基于老分支(OpenHar…

C++中explicit關鍵字的含義以及用法

在C中,explicit關鍵字用于修飾構造函數和轉換運算符(C11起),防止編譯器進行隱式類型轉換,要求必須顯式調用構造函數或轉換操作。以下是其核心用法和示例: 1. 修飾構造函數 用途 禁止隱式構造對象&#xf…

Oracle OCP認證考試考點詳解083系列01

題記: 本系列主要講解Oracle OCP認證考試考點(題目),適用于19C/21C,跟著學OCP考試必過。 1. 第1題: 題目 解析及答案: 關于自動工作量存儲庫(AWR)快照,以下哪三個選項…

從DNS到TCP:DNS解析流程和瀏覽器輸入域名訪問流程

1 DNS 解析流程 1.1 什么是DNS域名解析 在生活中我們會經常遇到域名,比如說CSDN的域名www.csdn.net,百度的域名www.baidu.com,我們也會碰到IP,現在目前有的是IPV4,IPV6。那這兩個有什么區別呢?IP地址是互聯網上計算機…

《2025軟件測試工程師面試》接口測試篇

基礎概念 什么是接口測試? 接口測試是測試系統組件間接口的一種測試,主要用于檢測外部系統和內部系統之間以及各個子系統之間的交互點。測試的重點是檢查數據的交換、傳遞和控制管理的過程,以及系統間的相互邏輯依賴關系等。 接口測試的優勢是什么? 接口測試具有規范性與擴…

【PHP腳本語言詳解】為什么直接訪問PHP文件會顯示空白?從錯誤示例到正確執行!

前言 作為一名開發者,你是否曾經遇到過這樣的問題:寫了一個PHP腳本,放到服務器根目錄后,直接通過file:///路徑訪問卻顯示空白頁面?而換成http://localhost卻能正常顯示?這篇文章將帶你深入理解PHP腳本語言…

word轉換為pdf后圖片失真解決辦法、高質量PDF轉換方法

1、安裝Adobe Acrobat Pro DC 自行安裝 2、配置Acrobat PDFMaker (1)點擊word選項卡上的Acrobat插件,(2)點擊“首選項”按鈕,(3)點擊“高級配置”按鈕(4)點…

基于PyTorch的深度學習2——逐元素操作,歸并,比較,矩陣

以下為部分逐元素操作代碼實例。 import torcht torch.randn(1, 3) t1 torch.randn(3, 1) t2 torch.randn(1, 3)#t0.1*(t1/t2) torch.addcdiv(t, 0.1, t1, t2)#計算sigmoid torch.sigmoid(t)#將t限制在[0,1]之間 torch.clamp(t,0,1)#t2進行就地運算 t.add_(2) 歸并操作一般…

線程池的工作流程

線程池的工作流程主要包括任務提交、線程分配、任務執行和線程回收等環節,以下是對其詳細的描述: 任務提交 當有任務需要執行時,用戶通過線程池提供的提交方法,如execute()或submit()方法,將任務(通常是實現…

C++20 標準化有符號整數:邁向更可預測的整數運算

文章目錄 一、背景:為什么需要標準化?二、2 的補碼:原理與優勢(一)2 的補碼原理(二)2 的補碼的優勢 三、C20 的變化:明確 2 的補碼四、如何利用這一特性優化代碼(一&…