Ruby vs Python 套件管理完整對照表
🔥 常用指令速查表
Ruby (Jekyll/Rails 專案)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| # 1️⃣ 檢查版本
ruby -v
rvm list
# 2️⃣ 切換版本
rvm use 3.3.0 --ruby-version
# 3️⃣ 設定專案隔離
bundle config set --local path 'vendor/bundle'
# 4️⃣ 安裝套件
bundle install
# 5️⃣ 執行指令
bundle exec jekyll serve
bundle exec rails server
|
Python (Django/Flask 專案)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| # 1️⃣ 檢查版本
python --version
pyenv versions
# 2️⃣ 切換版本
pyenv local 3.11.0
# 3️⃣ 建立虛擬環境
python -m venv venv
# 4️⃣ 啟動環境 + 安裝套件
source venv/bin/activate
pip install -r requirements.txt
# 5️⃣ 執行指令
python manage.py runserver
python script.py
# 6️⃣ 離開虛擬環境
deactivate
|
📊 核心概念對照表
| 功能 | Ruby | Python |
|---|
| 語言 | Ruby | Python |
| 套件管理器 | gem | pip |
| 套件倉庫 | RubyGems.org | PyPI |
| 依賴管理工具 | Bundler | pip / Poetry / Pipenv |
| 套件定義檔 | Gemfile | requirements.txt |
| 鎖定版本檔 | Gemfile.lock | poetry.lock / Pipfile.lock |
| 版本管理器 | rbenv / rvm | pyenv |
| 虛擬環境 | Bundler path / gemsets | venv / virtualenv |
| 執行前綴 | bundle exec | source venv/bin/activate |
🔧 詳細對應關係
1. 套件安裝
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| # 全域安裝套件
gem install rails
gem install jekyll
# 查看已安裝的 gems
gem list
# 移除套件
gem uninstall rails
# 專案依賴安裝
bundle install
# 更新套件
bundle update
|
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| # 全域安裝套件
pip install django
pip install flask
# 查看已安裝的套件
pip list
# 移除套件
pip uninstall django
# 專案依賴安裝
pip install -r requirements.txt
# 更新套件
pip install --upgrade django
|
2. 依賴定義檔案
Ruby - Gemfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| source 'https://rubygems.org'
# 指定版本
gem 'rails', '7.0.0'
# 版本範圍
gem 'jekyll', '~> 4.3' # >= 4.3.0 且 < 5.0.0
gem 'pg', '>= 1.0' # >= 1.0.0
# 開發環境專用
group :development do
gem 'pry'
end
# 測試環境專用
group :test do
gem 'rspec'
end
|
Python - requirements.txt
# 指定版本
Django==4.2.0
# 版本範圍
Flask>=2.3.0,<3.0.0
requests>=2.28.0
# 最新版本
pytest
Python - pyproject.toml (Poetry)
1
2
3
4
5
6
7
8
| [tool.poetry.dependencies]
python = "^3.11"
django = "^4.2"
requests = "^2.28"
[tool.poetry.dev-dependencies]
pytest = "^7.0"
black = "^23.0"
|
3. 版本管理
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| # 安裝 Ruby 版本
rvm install 3.3.0
rbenv install 3.3.0
# 查看已安裝的版本
rvm list
rbenv versions
# 切換全域版本
rvm use 3.3.0 --default
rbenv global 3.3.0
# 切換專案版本(會建立 .ruby-version)
rvm use 3.3.0 --ruby-version
rbenv local 3.3.0
# 查看目前版本
ruby -v
|
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # 安裝 Python 版本
pyenv install 3.11.0
# 查看已安裝的版本
pyenv versions
# 切換全域版本
pyenv global 3.11.0
# 切換專案版本(會建立 .python-version)
pyenv local 3.11.0
# 查看目前版本
python --version
|
4. 專案隔離環境
Ruby - Bundler
1
2
3
4
5
6
7
8
9
10
11
12
13
| # 設定套件安裝到專案目錄
bundle config set --local path 'vendor/bundle'
# 安裝依賴
bundle install
# 查看配置
bundle config list
# 執行指令(使用專案的 gems)
bundle exec jekyll serve
bundle exec rails console
bundle exec rake test
|
Ruby - RVM Gemsets (較少用)
1
2
3
4
5
6
7
8
| # 建立並使用 gemset
rvm use 3.3.0@myproject --create
# 列出 gemsets
rvm gemset list
# 刪除 gemset
rvm gemset delete myproject
|
Python - venv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| # 建立虛擬環境
python -m venv venv
# 啟動虛擬環境
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# 安裝套件(會安裝到虛擬環境)
pip install django
# 凍結依賴
pip freeze > requirements.txt
# 離開虛擬環境
deactivate
# 刪除虛擬環境
rm -rf venv
|
5. 執行指令
Ruby
1
2
3
4
5
6
7
8
| # 使用專案的 gems
bundle exec jekyll serve
bundle exec rails server
bundle exec rake db:migrate
bundle exec rspec
# 為什麼需要 bundle exec?
# 確保使用 Gemfile 指定的 gem 版本,而非全域安裝的版本
|
Python
1
2
3
4
5
6
7
8
9
| # 方法 1: 啟動虛擬環境後執行
source venv/bin/activate
python manage.py runserver
python script.py
pytest
# 方法 2: 直接使用虛擬環境的 Python
./venv/bin/python script.py
./venv/bin/pytest
|
🎯 實際應用範例
Ruby 專案:tofly.org (Jekyll)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| # 第一次設定
cd tofly.org
rvm use 3.3.0 --ruby-version # 建立 .ruby-version
bundle config set --local path 'vendor/bundle'
bundle install
# 日常使用
cd tofly.org
bundle exec jekyll serve
# 更新套件
bundle update jekyll
# 新增套件
# 1. 編輯 Gemfile
# 2. bundle install
|
目錄結構:
1
2
3
4
5
6
7
8
9
10
| tofly.org/
├── .ruby-version # Ruby 版本
├── .bundle/
│ └── config # Bundler 配置
├── vendor/
│ └── bundle/ # gems 安裝位置(不提交)
├── Gemfile # 依賴定義
├── Gemfile.lock # 版本鎖定
├── _config.yml
└── ...
|
.gitignore:
1
2
| vendor/bundle
.bundle
|
Python 專案:mysite (Django)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # 第一次設定
cd mysite
pyenv local 3.11.0 # 建立 .python-version
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 日常使用
cd mysite
source venv/bin/activate
python manage.py runserver
# 更新套件
pip install --upgrade django
pip freeze > requirements.txt
# 新增套件
pip install requests
pip freeze > requirements.txt
|
目錄結構:
1
2
3
4
5
6
| mysite/
├── .python-version # Python 版本
├── venv/ # 虛擬環境(不提交)
├── requirements.txt # 依賴定義
├── manage.py
└── ...
|
.gitignore:
1
2
3
| venv/
__pycache__/
*.pyc
|
💡 記憶口訣
Ruby 三步驟
1
2
3
| 1. rvm use → 選版本
2. bundle install → 裝套件
3. bundle exec → 跑程式
|
Python 三步驟
1
2
3
| 1. pyenv local → 選版本
2. source venv/bin/activate → 進環境
3. python → 跑程式
|
概念對應
1
2
3
4
5
6
| gem = pip
Bundler = venv + pip
Gemfile = requirements.txt
bundle exec = source venv/bin/activate
rvm/rbenv = pyenv
gemsets = venv
|
🚨 常見問題
Ruby
Q: 為什麼每次都要 bundle install?
- A: 沒有設定
path,gems 安裝在臨時位置 - 解決:
bundle config set --local path 'vendor/bundle'
Q: 為什麼要用 bundle exec?
- A: 確保使用 Gemfile 指定的版本,避免版本衝突
- 例外:已安裝 binstubs 可以直接用
./bin/jekyll
Q: ~> 是什麼意思?
- A: 悲觀版本鎖定
~> 4.3 = >= 4.3.0 且 < 5.0.0~> 4.3.1 = >= 4.3.1 且 < 4.4.0
Q: RVM 沒有生效?
- A: 沒有載入到 shell
1
2
| echo 'source ~/.rvm/scripts/rvm' >> ~/.bashrc
source ~/.bashrc
|
Python
Q: 為什麼要用虛擬環境?
Q: 忘記啟動虛擬環境會怎樣?
- A: 套件會安裝到系統 Python,可能造成權限問題或版本混亂
Q: pip freeze vs pip list?
- A:
pip list: 顯示所有套件pip freeze: 輸出 requirements.txt 格式
Q: 虛擬環境可以移動嗎?
🔗 參考資源
Ruby
Python
📝 快速除錯檢查清單
Ruby 專案無法啟動
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| # 1. 檢查 Ruby 版本
ruby -v
rvm list
# 2. 檢查 Bundler 配置
bundle config list
# 3. 檢查 gems 是否安裝
bundle check
# 4. 重新安裝
bundle install
# 5. 清除快取重裝
rm -rf vendor/bundle .bundle
bundle install
|
Python 專案無法啟動
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # 1. 檢查 Python 版本
python --version
pyenv versions
# 2. 檢查虛擬環境是否啟動
which python # 應該指向 venv/bin/python
# 3. 檢查套件是否安裝
pip list
# 4. 重新安裝
pip install -r requirements.txt
# 5. 重建虛擬環境
deactivate
rm -rf venv
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
|
🎓 進階主題
Ruby
Binstubs(不用每次 bundle exec)
1
2
3
| bundle install --binstubs
./bin/jekyll serve
./bin/rails console
|
多個 Ruby 版本切換
1
2
3
4
5
| # .ruby-version 檔案
3.3.0
# 進入目錄自動切換
cd tofly.org # 自動載入 Ruby 3.3.0
|
Python
Poetry(現代化工具)
1
2
3
4
5
6
7
8
9
10
| # 安裝
curl -sSL https://install.python-poetry.org | python3 -
# 初始化專案
poetry init
poetry add django
poetry install
# 執行
poetry run python manage.py runserver
|
conda(數據科學常用)
1
2
3
4
5
6
7
8
| # 建立環境
conda create -n myenv python=3.11
# 啟動環境
conda activate myenv
# 安裝套件
conda install numpy pandas
|
版本: 1.0 更新日期: 2025-10-25 適用對象: Ruby 和 Python 開發者