web-dev-qa-db-ja.com

Ubuntu 16.10でPython 3.6にpipをインストールする方法は?

この質問は重複しているように見えるかもしれませんが、そうではないことを指摘することから始めたいと思います。ここで私がAsk Ubuntuで見た質問はすべて、Python 3のpipに関するものであり、Python 3.6について話している。当時使用されていた手順は、Python 3.6では機能しません。

  1. 公式docker store から明確なUbuntu 16.10イメージを取得しました。
  2. apt-get updateを実行します
  3. apt-get install python3.6を実行します
  4. apt-get install python3-pipを実行します
  5. pip3 install requests bs4を実行します
  6. python3.6 script.pyを実行します

以下のModuleNotFoundErrorを取得しました:

 Traceback (most recent call last):
    File "script.py", line 6, in <module>
     import requests
 ModuleNotFoundError: No module named 'requests'

私がマシンに持っているPythonとpip:

python3
python3.5
python3.5m
python3.6
python3m
python3-config
python3.5-config
python3.5m-config
python3.6m
python3m-config  

pip
pip3
pip3.5
39
JChris

私はstackoverflowで答えを得ました。

ソース: https://stackoverflow.com/a/44254088/1812319

Ubuntu 16.04、16.10、または17.04を実行しているシステムがあり、Python 3.6をデフォルトのPythonにしたいとします。

Ubuntu 16.04 LTSを使用している場合、PPAを使用する必要があります。

Sudo add-apt-repository ppa:jonathonf/python-3.6  # (only for 16.04 LTS)

次に、以下を実行します(これは16.10および17.04ですぐに使用できます)。

Sudo apt update
Sudo apt install python3.6
Sudo apt install python3.6-dev
Sudo apt install python3.6-venv
wget https://bootstrap.pypa.io/get-pip.py
Sudo python3.6 get-pip.py
Sudo ln -s /usr/bin/python3.6 /usr/local/bin/python3
Sudo ln -s /usr/local/bin/pip /usr/local/bin/pip3

# Do this only if you want python3 to be the default Python
# instead of python2 (may be dangerous, esp. before 2020):
# Sudo ln -s /usr/bin/python3.6 /usr/local/bin/python

上記のすべてを完了すると、次の各シェルコマンドはPython 3.6.1(またはPython 3.6の最新バージョン)を示す必要があります。

python --version   # (this will reflect your choice, see above)
python3 --version
$(head -1 `which pip` | tail -c +3) --version
$(head -1 `which pip3` | tail -c +3) --version
15
JChris

この回答は、python3.6がインストールされていることを前提としています。 python3.7の場合、3.63.7に置き換えます。 python3.8の場合、3.63.8に置き換えますが、最初にpython3.8-distutilsパッケージが必要になる場合もあります。

Sudoを使用したインストール

pipのインストール に関しては、(curlの代わりに)wgetを使用すると、ディスクへのファイルの書き込みが回避されます。

curl https://bootstrap.pypa.io/get-pip.py | Sudo -H python3.6

更新されたpythonインタープリターにpipをインストールするときに、次のようなエラーを防ぐために、Sudoには-Hフラグが明らかに必要です。

ディレクトリ '/home/someuser/.cache/pip/http'またはその親ディレクトリが現在のユーザーによって所有されておらず、キャッシュが無効になっています。そのディレクトリの権限と所有者を確認してください。 Sudoでpipを実行する場合、Sudoの-Hフラグが必要な場合があります。

ディレクトリ '/home/someuser/.cache/pip'またはその親ディレクトリは現在のユーザーが所有しておらず、キャッシングホイールは無効になっています。そのディレクトリの権限と所有者を確認してください。 Sudoでpipを実行する場合、Sudoの-Hフラグが必要な場合があります。

Sudoを使用しないインストール

curl https://bootstrap.pypa.io/get-pip.py | python3.6 - --user

これにより、次のような警告が表示される場合があります。

警告:スクリプトホイールは、PATH上にない「/home/ubuntu/.local/bin」にインストールされます。このディレクトリをPATHに追加することを検討してください。または、この警告を抑制する場合は、-no-warn-script-locationを使用してください。

検証

この後、pippip3、およびpip3.6はすべて同じターゲットを指すことが期待できます。

$ (pip -V && pip3 -V && pip3.6 -V) | uniq
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)

もちろん、代わりにpython3.6 -m pipを使用することもできます。

$ python3.6 -m pip -V
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
41
Acumenus