前提・実現したいこと
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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
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
と出てくるのでは。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.09%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
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と出たので、入っているものと思っていました。