Python 3 エンジニア認定実践試験対策 (1)　- pip

Pythonを数年使ってきて、改めて知識の整理と最新仕様のキャッチアップのために Python 3 エンジニア認定実践試験を受験しようと思い、私的に作成した資料から簡易版を作成しました。
最後に練習問題を設けましたので、解説を読んだら記憶定着のために練習問題へチャレンジしてください。最後に答えを掲載しています。
  
# Python パッケージ管理 （pip）の基本
  
## 1. Pipって何？
Pipは「Python Package Installer」の略で、Pythonのパッケージを管理する道具です。
- スマートフォンのアプリストアのように、必要な機能（パッケージ）を簡単にインストールできます
- パッケージは「PyPI (Python Package Index)」という公式サイトから提供されているので、パッケージの詳細を調べる時は、PyPI公式サイトを使います
  
## 2. Pipを使う前の準備
### まずは確認
```bash
python -m pip --version  # Pipが入っているか確認
```
  
### もし入っていなければ
```bash
python -m ensurepip     # Pipをインストール
```
  
## 3. 基本的な使い方
### パッケージのインストール
```bash
pip install パッケージ名          # 最新版をインストール
pip install パッケージ名==1.2.0   # バージョンを指定してインストール
```
  
### パッケージの確認
```bash
pip list                # インストール済みパッケージを一覧表示
pip show パッケージ名    # パッケージの詳細情報を表示
```
  
### パッケージの更新と削除
```bash
pip install --upgrade パッケージ名   # パッケージを最新版に更新
pip uninstall パッケージ名          # パッケージを削除
```
  
## 4. よくある失敗と注意点
1. **インストール場所の注意**
   - システム全体にインストールされるのか
   - 個別の仮想環境（venvなどで構築した仮想環境ごと）にインストールされるのか
   - 意図しない場所にインストールすると問題が起きる可能性

2. **バージョンの注意**
   - 新しすぎるバージョンは他のパッケージと相性が悪いことも
   - プロジェクトで使用するバージョンは記録・管理するのがお勧め
  
3. **依存関係の注意**
   - パッケージを削除する時は、他のパッケージが使っていないか確認
   - `pip show パッケージ名` で依存関係を確認
  
## 5. 便利な使い方とTips
### 古くなったパッケージの確認
   - 最新バージョンではないインストール済みパッケージが表示されます。
   - pip自体が古いかどうかも確認できます。
```bash
pip list --outdated  # 更新可能なパッケージを表示
```

### Pipの更新
```bash
python -m pip install --upgrade pip  # Pip自体を最新版に更新
```
    
### バージョン範囲指定でインストール
```bash
pip install "パッケージ名>=1.2.0,<2.0.0"  # 範囲内の最新Ver.をインストール
```

## 6. 別のPythonに紐づくpipを指定して使う方法
### 6.1. pipとpythonの対応を確認
- コマンド: `pip -V`
    - 使いたいpipが存在する環境でバージョン確認コマンドを実行すると、pipのバージョンと、それがどのPythonバージョンに関連付けられているかが表示されます。
    - 例: `pip 20.2.4 from /path/to/python3.6/site-packages/pip (python 3.6)`

### 6.2. 特定のPythonバージョンのpipを指定して使う
- **方法1**: バージョン番号を付けた`pip`を使用する方法
    - コマンド: `pip3.6 install <package_name>`
        - 例えば、Python 3.6用のpipを使いたい場合は、`pip3.6`と指定します。

- **方法2**: バージョン番号を付けたpythonコマンドを使う方法
    - コマンド: `python3.6 -m pip install <package_name>`
        - 例えば、Python 3.6のpipを使う場合は、`python3.6 -m pip`を使用します。


---
# Python パッケージ管理 (pip) - 確認問題
  
1. Pipはどのようなツールですか？
   a) Pythonプログラムを実行するためのツール
   b) Pythonのプログラムを書くためのツール 
   c) Pythonのパッケージを管理するためのツール
   d) Pythonのバージョンを管理するためのツール
  
2. Pipがデフォルトで入っているPythonのバージョンは？
   a) Python 2.x
   b) Python 3.3
   c) Python 3.4以降
   d) Python 3.7以降
  
3. Pipがインストールされていない場合、どのようにインストールできますか？
   a) `pip install pip`
   b) `python -m ensurepip`
   c) `python3 -m pip install`
   d) `sudo apt-get install python3-pip`
  
4. パッケージをインストールするコマンドは次のうちどれですか？
   a) `install パッケージ名`
   b) `package install パッケージ名`
   c) `pip パッケージ名` 
   d) `pip install パッケージ名`
  
5. パッケージのバージョンを指定してインストールするには、どのようなコマンドを使いますか？
   a) `pip install パッケージ名=1.2.0`
   b) `pip install パッケージ名:1.2.0`
   c) `pip install パッケージ名==1.2.0`
   d) `pip install パッケージ名[1.2.0]`
  
6. インストール済みパッケージの一覧を表示するコマンドは次のうちどれですか？
   a) `pip show`
   b) `pip list`
   c) `pip packages`
   d) `pip installed`
  
7. 古くなったパッケージを表示するコマンドは次のうちどれですか？
   a) `pip outdated`
   b) `pip old`
   c) `pip list --outdated`
   d) `pip show --outdated`
  
8. Pip自体を最新バージョンにアップグレードするコマンドは次のうちどれですか？
   a) `pip upgrade pip`
   b) `pip install --upgrade pip`
   c) `python -m pip install --upgrade pip`
   d) `python3 -m ensurepip --upgrade`
  
9. パッケージをアンインストールするコマンドは次のうちどれですか？
   a) `pip remove パッケージ名`
   b) `pip delete パッケージ名`
   c) `pip uninstall パッケージ名`
   d) `pip erase パッケージ名`
  
10. パッケージをインストールする際の注意点として正しいものは次のうちどれですか？
    a) インストール先の場所に気をつける
    b) 最新バージョンをインストールすれば問題ない
    c) 依存関係を確認する必要がある
    d) a, b, cすべて

11. Pythonバージョン3.6のpipを使うための方法として正しいものはどれですか？（複数選択可）
   - a) `pip3.6 install <package_name>`
   - b) `python3.6 -m pip install <package_name>`
   - c) `python -m pip3.6 install <package_name>`

解答:
1. c
2. c
3. b
4. d
5. c
6. b
7. c
8. c
9. c
10. a
11. a, b