pyenv

Python 教學 1 – 環境架設 ( pyenv ) 與 Python 簡介

1. 使用 pyenv 安裝 Python

雖然可以直接在 Python 官網安裝特定版本,但通常 local 上如果有不只一個 Python 專案的話,使用 pyenv 會比較好管理不同專案的 Python 版本。

1.1 安裝 pyenv

$ brew install pyenv

pyenv 一些常見指令

# 查看 pyenv 的版本
$ pyenv -v

# 列出目前有用 pyenv 安裝的 Python 版本
$ pyenv versions
* system (set by /Users/jimmy/.pyenv/version)
# 預設只有系統預裝的版本

1.2 設定 shell environment

這邊以 zsh 為例:

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

bash 和 fish 相關的 config 可以參考 pyenv 的 document

1.3 用 pyenv 安裝 Python

# 列出可以用 pyenv install 的 python 版本
$ pyenv install -l
Available versions:
...

# 安裝特定版本的 python
$ pyenv install 3.11

$ pyenv versions
* system (set by /Users/jimmy/.pyenv/version)
  3.11.4
# 會發現多了剛剛 install 的版本

1.4 設定 global 的 Python 版本

# 設定 global 的 python 版本
$ pyenv global 3.11

$ pyenv versions
  system
* 3.11.4 (set by /Users/jimmy/.pyenv/version)

1.5 設定 local 的 Python 版本

假設今天有一個新的 project,用的 python 版本和 global 不一樣,那我可以用 .python-version 檔案來指定這個 project 要用的 Python 版本:

# .python-version
3.10.12

使用 pyenv local 指令,會去抓 current directory 的 .python-version 檔案,如果有就會用這個檔案的 Python 版本:

$ pyenv local
$ pyenv versions
  system
* 3.10.12 (set by /Users/jimmy/Desktop/Project/pyenv-test/.python-version)
  3.11.4

2. Python 簡介

2.1 Python interpreter Interactive Mode

Python 是一門 Interpreted language(直譯式語言),需要 interpreter 才能執行。我們可以輸入對應的指令進到 interpreter 的 interactive mode,藉此執行一些 Python 的程式。

需要注意的是,如果直接輸入 python,預設會是系統預裝的 python 2:

$ python --version
Python 2.7.18

要輸入 python3 才會是剛剛 install 的版本:

$ python3 --version
Python 3.11.4

直接輸入 python3 的話可以進到 interactive mode

$ python3                                                                                                                                                                        
Python 3.11.4 (main, Aug 14 2023, 23:05:55) [Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World")
Hello World
>>>

2.1 動態語言

Python 是動態語言,不需事先定義變數的型別:

str = "Hello World!"
number = 123

2.2 強型別

Python 是強型別語言,當兩個變數型別不同時相加 Python 會報錯:

str1 = "Hello "
str2 = "World"
print(str1 + str2)
# "Hello World!"

number = 123
print(str1 + number)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str

3. 參考資料

Simple Python Version Management: pyenv – GitHub
Python 教學

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top