web-dev-qa-db-ja.com

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

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

  1. 公式Dockerストア から明確な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
46
JChris

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
88
Miles Erickson

少なくともubuntu 16.10では、デフォルトのpython3python3.5です。そのため、python3-Xパッケージはすべて、python3.6ではなくpython3.5にインストールされます。

これは、pip3のシバンを確認することで確認できます。

$ head -n1 $(which pip3)
#!/usr/bin/python3

幸いなことに、python3-pipパッケージによってインストールされたpipは「共有」/usr/lib/python3/dist-packagesにインストールされるため、python3.6でも利用できます。

Python3.6のパッケージは、次の方法でインストールできます。

python3.6 -m pip install ...

例えば:

$ python3.6 -m pip install requests
$ python3.6 -c 'import requests; print(requests.__file__)'
/usr/local/lib/python3.6/dist-packages/requests/__init__.py
32
Anthony Sottile

この回答は、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)
10
Acumenus

このWebサイトには、はるかにクリーンなソリューションが含まれており、pipはそのままで、3.5と3.6の間、および3.7がリリースされるたびに簡単に切り替えることができます。

http://ubuntuhandbook.org/index.php/2017/07/install-python-3-6-1-in-ubuntu-16-04-lts/

短い要約:

Sudo apt-get install python python-pip python3 python3-pip
Sudo add-apt-repository ppa:jonathonf/python-3.6
Sudo apt-get update
Sudo apt-get install python3.6
Sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
Sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2

それから

$ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip3 -V
pip 8.1.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

次に、python 3.6を選択して実行します

Sudo update-alternatives --config python3

「2」を選択します。それから

$ pip3 -V
pip 8.1.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)

Pipを更新するには、目的のバージョンを選択し、

pip3 install --upgrade pip

$ pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)

Ubuntu 16.04でテスト済み。

3
genetica