」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > pyenv入門:Python開發必備工具

pyenv入門:Python開發必備工具

發佈於2024-11-08
瀏覽:182

Getting Started with pyenv: A Must-Have Tool for Python Development

什麼是 pyenv,為什麼需要它?

pyenv 是一個簡單但功能強大的工具,可讓您管理系統上的多個 Python 版本。身為 Python 開發人員,您經常需要處理需要不同 Python 版本的不同專案。手動管理這些版本可能很麻煩且容易出錯。這就是 pyenv 的用武之地,它可以輕鬆地在 Python 版本之間切換,確保您的專案始終在正確的版本上運行。

為什麼要使用 pyenv?

  • 版本管理:輕鬆安裝和切換不同的Python版本。

  • 項目隔離:確保每個項目使用正確的Python版本,避免相容性問題。

  • 靈活性:在多個 Python 版本上輕鬆測試您的程式碼。

如果您曾經遇到過版本衝突的問題,或者必須在同一台電腦上同時使用 Python 2.x 和 3.x,您將會欣賞 pyenv 如何簡化您的開發工作流程。

將 pyenv 與 Poetry 集成

pyenv 與 Poetry 配合得非常好,Poetry 是一個管理依賴項和 Python 環境的工具。如果您已經熟悉 Poetry(如果您不熟悉,請查看我關於 Poetry 入門的文章),您會發現將其與 pyenv 結合使用可以讓您更好地控制您的專案。

當您使用 Poetry 建立新專案時,它會自動使用 pyenv 為目錄設定的 Python 版本。這可確保在符合您的專案要求的環境中管理您的專案依賴項。

安裝 pyenv

讓我們從安裝 pyenv 開始。安裝過程會因您的作業系統而異。

在 macOS 上

使用自製程式:

brew update
brew install pyenv

為了避免它們意外連結到 Pyenv 提供的 Python,請將以下行加入互動式 shell 的配置中:

  • Bash/Zsh:
alias brew='env PATH="${PATH//$(pyenv root)\/shims:/}" brew'
  • 魚:
alias brew="env PATH=(string replace (pyenv root)/shims '' \"\$PATH\") brew"

在 Linux 上

  • 使用捲曲:
curl https://pyenv.run | bash

安裝後,將以下內容新增至 shell 設定檔(例如 .bashrc、.zshrc):

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
  • 使用套件管理器 在 Arch Linux 上,可以在 pacman 的幫助下安裝
sudo pacman -S pyenv

透過在終端機中執行以下命令將命令新增至 ~/.bashrc:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

對於 Zsh:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

對於魚:
如果您有 Fish 3.2.0 或更高版本,請以互動方式執行此操作:

set -Ux PYENV_ROOT $HOME/.pyenv
fish_add_path $PYENV_ROOT/bin

否則,執行下面的程式碼片段:

set -Ux PYENV_ROOT $HOME/.pyenv
set -U fish_user_paths $PYENV_ROOT/bin $fish_user_paths

現在,將其新增至 ~/.config/fish/config.fish:

pyenv init - | source

有關更多詳細信息,請查看他們的 GitHub。

使用 Pyenv

1) 檢查Python版本

查看目前使用的Python版本:

❯ pyenv versions
* system (set by /home/shanu/.pyenv/version)

2) 安裝Python版本

使用pyenv,您可以輕鬆安裝任何版本的Python:

❯ pyenv install 3.11.9

安裝python版本後,可以對專案進行全域或本機設定

3) 設定全域Python版本

不推薦,可能會導致您的系統出現問題
您可以設定一個全域Python版本,該版本將在您的系統中預設使用:

pyenv global 3.10.6 

4) 設定本地Python版本

您也可以為特定專案目錄設定本地Python版本。當您位於該目錄中時,此版本將覆寫全域版本:

❯ pyenv local 3.8.10

❯ pyenv versions
  system
* 3.11.9 (set by /home/shanu/test_folder/.python-version)

❯ python -V
Python 3.11.9 (my global version is 3.12.5)

要取消設置,只需運行:

❯ pyenv local --unset

❯ pyenv versions
* system (set by /home/shanu/.pyenv/version)
  3.11.9

❯ python -V
Python 3.12.5

5) 卸載Python版本

卸載不再需要的Python版本:

pyenv uninstall 3.11.9

結論

Pyenv 對 Python 開發人員來說是一個非常寶貴的工具,特別是與 Poetry 結合使用時。透過輕鬆管理Python版本,它可以讓您專注於編寫程式碼而不用擔心版本衝突。在你的下一個 Python 專案中嘗試一下吧!

版本聲明 本文轉載於:https://dev.to/shanu-kumawat/getting-started-with-pyenv-a-must-have-tool-for-python-development-1d3j?1如有侵犯,請聯絡study_golang@163 .com刪除
最新教學 更多>
  • 如何使用FormData()處理多個文件上傳?
    如何使用FormData()處理多個文件上傳?
    )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    程式設計 發佈於2025-04-20
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-04-20
  • Go語言垃圾回收如何處理切片內存?
    Go語言垃圾回收如何處理切片內存?
    在Go Slices中的垃圾收集:詳細的分析在GO中,Slice是一個動態數組,引用了基礎陣列。使用切片時,了解垃圾收集行為至關重要,以避免潛在的內存洩漏。 考慮使用slice使用slice的以下實現:字符串{ R:=(*Q)[0] *q =(*q)[1:len(*q)] 返...
    程式設計 發佈於2025-04-20
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-04-20
  • 如何從PHP中的數組中提取隨機元素?
    如何從PHP中的數組中提取隨機元素?
    從陣列中的隨機選擇,可以輕鬆從數組中獲取隨機項目。考慮以下數組:; 從此數組中檢索一個隨機項目,利用array_rand( array_rand()函數從數組返回一個隨機鍵。通過將$項目數組索引使用此鍵,我們可以從數組中訪問一個隨機元素。這種方法為選擇隨機項目提供了一種直接且可靠的方法。
    程式設計 發佈於2025-04-20
  • 在所有瀏覽器中實現左對齊文本的斜線方法
    在所有瀏覽器中實現左對齊文本的斜線方法
    ] 在傾斜行上的文本對齊背景在傾斜行上實現左對齊的文本可能會構成挑戰,在nectera時尤其是挑戰。兼容性(返回IE9)。 通過引入一系列平方元素併計算其尺寸,我們可以創建一個有效的解決方案: .loop(@i) when (@i > 0){ .loop((@i - ...
    程式設計 發佈於2025-04-20
  • 在UTF8 MySQL表中正確將Latin1字符轉換為UTF8的方法
    在UTF8 MySQL表中正確將Latin1字符轉換為UTF8的方法
    在UTF8表中將latin1字符轉換為utf8 ,您遇到了一個問題,其中含義的字符(例如,“jáuòiñe”)在utf8 table tabled tablesset中被extect(例如,“致電。為了解決此問題,您正在嘗試使用“ mb_convert_encoding”和“ iconv”轉換受...
    程式設計 發佈於2025-04-20
  • 您如何在Laravel Blade模板中定義變量?
    您如何在Laravel Blade模板中定義變量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配變量對於存儲以後使用的數據至關重要。在使用“ {{}}”分配變量的同時,它可能並不總是最優雅的解決方案。 幸運的是,Blade通過@php Directive提供了更優雅的方法: $ old_section =...
    程式設計 發佈於2025-04-20
  • 為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    mySQL錯誤#1089:錯誤的前綴鍵錯誤descript [#1089-不正確的前綴鍵在嘗試在表中創建一個prefix鍵時會出現。前綴鍵旨在索引字符串列的特定前綴長度長度,可以更快地搜索這些前綴。 了解prefix keys `這將在整個Movie_ID列上創建標準主鍵。主密鑰對於唯一識...
    程式設計 發佈於2025-04-20
  • 在Java中使用for-to-loop和迭代器進行收集遍歷之間是否存在性能差異?
    在Java中使用for-to-loop和迭代器進行收集遍歷之間是否存在性能差異?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    程式設計 發佈於2025-04-20
  • 在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在JTable中維護jtable單元格渲染後,在JTable中,在JTable中實現自定義單元格渲染和編輯功能可以增強用戶體驗。但是,至關重要的是要確保即使在編輯操作後也保留所需的格式。 在設置用於格式化“價格”列的“價格”列,用戶遇到的數字格式丟失的“價格”列的“價格”之後,問題在設置自定義單元...
    程式設計 發佈於2025-04-20
  • 為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,輸出...
    程式設計 發佈於2025-04-20
  • 在JavaScript中如何並發運行異步操作並正確處理錯誤?
    在JavaScript中如何並發運行異步操作並正確處理錯誤?
    同意操作execution 在執行asynchronous操作時,相關的代碼段落會遇到一個問題,當執行asynchronous操作:此實現在啟動下一個操作之前依次等待每個操作的完成。要啟用並發執行,需要進行修改的方法。 第一個解決方案試圖通過獲得每個操作的承諾來解決此問題,然後單獨等待它們: c...
    程式設計 發佈於2025-04-20
  • 圖片在Chrome中為何仍有邊框? `border: none;`無效解決方案
    圖片在Chrome中為何仍有邊框? `border: none;`無效解決方案
    在chrome 在使用Chrome and IE9中的圖像時遇到的一個頻繁的問題是圍繞圖像的持續薄薄邊框,儘管指定了圖像,儘管指定了;和“邊境:無;”在CSS中。要解決此問題,請考慮以下方法: Chrome具有忽略“ border:none; none;”的已知錯誤,風格。要解決此問題,請使用以下...
    程式設計 發佈於2025-04-20
  • 為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    在CSS 問題:不正確的代碼: 全球範圍將所有餘量重置為零,如提供的代碼所建議的,可能會導致意外的副作用。解決特定的保證金問題是更建議的。 例如,在提供的示例中,將以下代碼添加到CSS中,將解決餘量問題: body H1 { 保證金頂:-40px; } 此方法更精確,避免了由全局保證金重置...
    程式設計 發佈於2025-04-20

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3