Table of Contents
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