この質問は重複しているように見えるかもしれませんが、そうではないことを指摘することから始めたいと思います。ここで私が見た質問はすべて、Python 3のpipに関するもので、私はPython 3.6について話している。当時使用されていた手順は、Python 3.6では機能しません。
apt-get update
を実行しますapt-get install python3.6
を実行しますapt-get install python3-pip
を実行しますpip3 install requests bs4
を実行します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
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
少なくともubuntu 16.10では、デフォルトのpython3
はpython3.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
この回答は、python3.6
がインストールされていることを前提としています。 python3.7
の場合、3.6
を3.7
に置き換えます。 python3.8
の場合は、3.6
を3.8
に置き換えますが、最初にpython3.8-distutils
パッケージが必要になる場合もあります。
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フラグが必要な場合があります。
curl https://bootstrap.pypa.io/get-pip.py | python3.6 - --user
これにより、次のような警告が表示される場合があります。
警告:スクリプトホイールは、PATH上にない「/home/ubuntu/.local/bin」にインストールされます。このディレクトリをPATHに追加することを検討してください。または、この警告を抑制したい場合は、-no-warn-script-locationを使用してください。
この後、pip
、pip3
、および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)
この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でテスト済み。