質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.09%

python3.xの複数バージョン環境における、pip3のインストール先を変更したい。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,534

score 9

前提・実現したいこと

Ubuntu 16.04.6 LTSでwebサーバを構築し、pythonをcgiとして実行したいと思っています。
python3.7のインストールから、cgiの設定まで行い、ページが表示される所までは出来ています。
現在インストールされているpythonが3つありまして、

  • python2.7
  • python3.5
  • python3.7 <- このバージョンで動かしたい

発生している問題・エラーメッセージ

import mysql.connector


でModuleNotFoundErrorが発生します。
単純にライブラリがインストールされていないのが問題なのですが、pip3で正しくインストールが出来ていない状況です。

pip3は以下の場所にインストールされています。

# pip3 -V
pip 20.1.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

そのまま、mysql-connector-pythonをインストールすると

# pip3 install mysql-connector-python
/usr/local/lib/python3.5/dist-packages/配下にライブラリがインストールされます。

試したこと

pip3をremoveしてみました

# sudo apt-get --purge remove python3-pip

Package 'python3-pip' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

# which pip3
/usr/local/bin/pip3
# pip3 -V
pip 20.1.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

と、pip3は残ったままです。

インストール先を指定してみました。

# pip3 install mysql-connector-python -t /usr/local/lib/python3.7/dist-packages


そのディレクトリにライブラリは保存されるのですが、ModuleNotFoundErrorは出たままでした。

あと、最初にpip3をインストールした時のpython3バージョンは不明ですが、途中で以下の作業を行いました。

#vi ~/.bashrc

alias python3='/usr/bin/python3.7'を追記

# python3 --version
Python 3.7.7

補足情報(FW/ツールのバージョンなど)

Ubuntu 16.04.6 LTS
python 3.5 / 3.7

pip3でインストールするパッケージのバージョン指定はチラホラ情報はあるのですが、python3.xのバージョン指定を見つけることが出来ませんでした。

追記
/usr/local/bin 配下はpython3.7しか入っていませんでした。

-rwxr-xr-x  1 root root      224 Jun 11 09:59 pip*
-rwxr-xr-x  1 root root      224 Jun 11 09:59 pip3*
-rwxr-xr-x  1 root root      224 Jun 11 09:59 pip3.5*
-rwxr-xr-x  1 root root      223 May 30 22:08 pip3.7*
-rwxr-xr-x  1 root root       84 May 30 22:08 pydoc3.7*
-rwxr-xr-x  2 root root 13842536 May 30 22:07 python3.7*
-rwxr-xr-x  2 root root 13842536 May 30 22:07 python3.7m*
-rwxr-xr-x  1 root root     2902 May 30 22:08 python3.7m-config*
-rwxr-xr-x  1 root root      441 May 30 22:08 pyvenv-3.7*


/usr/local/lib 配下が以下の通りなので、3つあると思っていました。

drwxrwsr-x  4 root staff     4096 May 30 08:43 python2.7/
drwxrwsr-x  3 root staff     4096 Aug 18  2016 python3.5/
drwxr-xr-x 36 root root      4096 Jun 11 10:12 python3.7/
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • quickquip

    2020/06/11 13:33

    質問から /usr/local/bin の下にpython3.5が入っているだろうという推測ができますが合っていますか?
    python3.7 も /usr/local/bin にあるのですか?

    > 現在インストールされているpythonが3つありまして、
    と認識している根拠となるファイルのありかを示せますか?

    キャンセル

  • chulton97

    2020/06/11 13:43

    /usr/local/bin と /usr/local/lib の中身を記載しました。
    alias python3='/usr/bin/python3.7'を追記する前にpython3のバージョンを確認したら3.5と出たので、入っているものと思っていました。

    キャンセル

回答 1

checkベストアンサー

+1

疑問点が書いてないので回答のしようもありませんがpython3.7を使いたいという点だけを言えばpip3.7とpython3.7のコマンドを使えばいいだけではないでしょうか?
shebangにpython3.7と書けばいいのでは。

大雑把な感想としては、

/usr/local に入っているコマンドはaptで入れたものではないのでaptでアンインストールしようとしても無駄です。

タイムスタンプからするとpython3.7 を/usr/localにどうやってかインストールしたあとで、aptで入っていた/usr/bin/pip3(当然これはaptで入った/usr/bin/python3.5に紐付いています)をpip3 install --upgrade pipあたりでアップデートしたのでは。これをすると新しいpip3コマンドは/usr/local/binに入ります。

今の状況は

/usr/bin/python3.5 がapt由来のもので入っていそう
/usr/local/bin/python3.7 は自分で入れた
/usr/local/bin/pip3 は /usr/bin/python3.5 に紐付くように自分でupgradeした

という感じではないでしょうか。

head -n 1 /usr/local/bin/pip3
すると、
#!/usr/bin/python3
と出てくるのでは。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/06/11 18:04

    ありがとうございました。
    pip3.7というコマンドがあることがわかっていなく、pip3.7でパッケージのインストールが上手く行きました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る