認証有り無しProxy環境下でPython開発環境を構築する際のProxy設定集 for Linux/Windows (随時更新)

# はじめに
Proxy(認証有り/無し)が存在するハイセキュリティな環境において、LinuxとWindowsのPython開発環境を構築した際の筆者のメモです。


# Linux編 (UbuntuおよびRaspbian)
## システム全体的なProxy設定 (Bash)
Webブラウジングなどするときに必要なProxy設定を環境変数として定義します。
`~/.bashrc`などに書いておけば便利ですが、認証有りProxyの場合平文でパスワードを入力するので、共有PCなどでは注意が必要です。

```Bash:~/.bashrc
# 認証無しProxyの場合は以下を追加
export https_proxy="http://<your.proxy.address>:<proxy.port>/"
export HTTPS_PROXY="http://<your.proxy.address>:<proxy.port>/"
export http_proxy="http://<your.proxy.address>:<proxy.port>/"
export HTTP_PROXY="http://<your.proxy.address>:<proxy.port>/"
export ftp_proxy="http://<your.proxy.address>:<proxy.port>/"
export FTP_PROXY="http://<your.proxy.address>:<proxy.port>/"

# 認証付きProxyの場合は以下を追加
export https_proxy="http://<username>:<password>@<your.proxy.address>:<proxy.port>/"
export HTTPS_PROXY="http://<username>:<password>@<your.proxy.address>:<proxy.port>/"
export http_proxy="http://<username>:<password>@<your.proxy.address>:<proxy.port>/"
export HTTP_PROXY="http://<username>:<password>@<your.proxy.address>:<proxy.port>/"
export ftp_proxy="http://<username>:<password>@<your.proxy.address>:<proxy.port>/"
export FTP_PROXY="http://<username>:<password>@<your.proxy.address>:<proxy.port>/"
```



## apt
`/etc/apt/apt.conf`(存在しない場合はファイルを作成)に以下を追加します。

```Bash:/etc/apt/apt.conf
# 認証無しProxyの場合は以下を追加
Acquire::ftp::proxy "http://<your.proxy.address>:<proxy.port>/";
Acquire::http::proxy "http://<your.proxy.address>:<proxy.port>/";
Acquire::https::proxy "http://<your.proxy.address>:<proxy.port>/";

# 認証付きProxyの場合は以下を追加
Acquire::ftp::proxy "http://<username>:<password>@<your.proxy.address>:<proxy.port>/";
Acquire::http::proxy "http://<username>:<password>@<your.proxy.address>:<proxy.port>/";
Acquire::https::proxy "http://<username>:<password>@<your.proxy.address>:<proxy.port>/";
```

## wget
`/etc/wgetrc`の以下の部分をコメントアウトして、適したProxyの設定を追加します。root権限が必要です。

```Bash:/etc/wgetrc
# 認証無しProxyの場合は以下の部分をコメントアウトして編集
https_proxy = "http://<your.proxy.address>:<proxy.port>/"
http_proxy = "http://<your.proxy.address>:<proxy.port>/"
ftp_proxy = "http://<your.proxy.address>:<proxy.port>/"

# 認証付きProxyの場合は以下の部分をコメントアウトして編集
https_proxy = "http://<username>:<password>@<your.proxy.address>:<proxy.port>/"
http_proxy = "http://<username>:<password>@<your.proxy.address>:<proxy.port>/"
ftp_proxy = "http://<username>:<password>@<your.proxy.address>:<proxy.port>/"
```

## pip
`pip`コマンドのあとに`-proxy`オプションを付けてコマンドを実行します。以下の例では`install`を実行していますが、もちろんこれに限りません。

```Bash
# pip/認証なしProxyの場合
$ pip install --proxy="http://<your.proxy.address>:<proxy.port>/" <library name>
# pip3/認証なしProxyの場合
$ pip3 install --proxy="http://<your.proxy.address>:<proxy.port>/" <library name>

# pip/認証ありProxyの場合
$ pip install --proxy="http://<username>:<password>@<your.proxy.address>:<proxy.port>/" <library name>
# pip3/認証ありProxyの場合
$ pip3 install --proxy="http://<username>:<password>@<your.proxy.address>:<proxy.port>/" <library name>
```

## conda
Anacondaルートフォルダに`.condarc`を作成し、以下の内容を追加。本ファイル自体がPython書式で書く必要があるため、インシデントをお忘れなく。自らのホームディレクトリ下以外にAnacondaをインストールした場合、root権限が必要になるかもしれません。

```python:/path/to/Anaconda/home/.condarc
# 認証なしProxyの場合
proxy_servers:
    http: "http://<your.proxy.address>:<proxy.port>/"
    https: "http://<your.proxy.address>:<proxy.port>/"

# 認証ありProxyの場合
proxy_servers:
    http: "http://<username>:<password>@<your.proxy.address>:<proxy.port>/" 
    https: "http://<username>:<password>@<your.proxy.address>:<proxy.port>/" 
```

# Windows編

## pip
Linuxと同じく、`pip`コマンドのあとに`-proxy`オプションを付けてコマンドを実行します。以下の例では`install`を実行していますが、もちろんこれに限りません。

```Powershell
# pip/認証なしProxyの場合
> pip install --proxy="http://<your.proxy.address>:<proxy.port>/" <library name>
# pip3/認証なしProxyの場合
> pip3 install --proxy="http://<your.proxy.address>:<proxy.port>/" <library name>

# pip/認証ありProxyの場合
> pip install --proxy="http://<username>:<password>@<your.proxy.address>:<proxy.port>/" <library name>
# pip3/認証ありProxyの場合
> pip3 install --proxy="http://<username>:<password>@<your.proxy.address>:<proxy.port>/" <library name>
```

## conda
Linuxと同じく、Anacondaルートフォルダに`.condarc`を作成し、以下の内容を追加。本ファイル自体がPython書式で書く必要があるため、インシデントをお忘れなく。Windowsの場合、`.condarc`の'.'をファイル新規作成時に指定できないので、一度別名で保存したあと`.condarc`に変更します。

```python:/path/to/Anaconda/home/.condarc
# 認証なしProxyの場合
proxy_servers:
    http: "http://<your.proxy.address>:<proxy.port>/"
    https: "http://<your.proxy.address>:<proxy.port>/"

# 認証ありProxyの場合
proxy_servers:
    http: "http://<username>:<password>@<your.proxy.address>:<proxy.port>/" 
    https: "http://<username>:<password>@<your.proxy.address>:<proxy.port>/" 
```


# Reference
1. https://qiita.com/showsuzu/items/9ee031208d38ff8ac889
2. https://qiita.com/wararaki/items/df537718be0f27171cdd
3. https://qiita.com/Kyohei_Yamaji/items/dcee95ade24e12fdfd91