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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Q&A

解決済

1回答

3482閲覧

pyenv によるバージョン管理の仕方

退会済みユーザー

退会済みユーザー

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

0グッド

0クリップ

投稿2019/06/07 02:04

編集2019/06/07 02:26

python 自体はほとんどかいたことがない初心者です

AWS ラムダでサポートしてる最新の 3.7 を使うために
pyenv というのを使ってもともとあった python とは別の 3.7.0 をインストールしてみたのですが
global も local でバージョンが 3.7.0 の状態で aws コマンドを打つと

bash

1> aws 2pyenv: aws: command not found 3 4The `aws' command exists in these Python versions: 5 3.5.0/envs/aws 6 aws

となります

3.7.0 をインストールした直後なのでコマンドがないのはバージョン管理が動いてる証拠でわかるのですが
この状態で pip install awscli して
Requirement already satisfied: awscli in $HOME/.local/lib/python3.7/site-packages (1.16.172)
にインストールは成功したみたいで
.local/bin/aws を叩くと動くのですが

この状態で aws コマンドをたたいてみたんですがやはり
.pyenv/shims/aws という場所をみにいってしまい同じエラーが出ます

コマンド自体はあるのにないというエラーが出る理由も謎なのですが
この .pyenv/shims というパスは何のためのパスなのでしょうか

pyenv の設定でいろんなブログで

export PYENV_ROOT="$HOME/.pyenv" if [ -d "${PYENV_ROOT}" ]; then export PATH="$PATH:$HOME/.pyenv/bin" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" fi

こういうのを .bashrc にかけといってるんですがこれのせいで
.pyenv/shims/bin というパスが最優先で追加されてみにいってしまいます

これでは pyenv で切り替えても古いコマンドをみにいってしまって意味がないように思うのですが
使い方が間違っているのでしょうか

.pyenv/shims/aws というのを消せば普通に動きそうな気はしますが
何か理由があって存在してるものを消すとあとあと困りそうなので
3.7 の状態でインストールされたコマンドを絶対パスなしで呼び出すにはどうすればいいんでしょうか

追記:

.bash_history を確認しましたが python のインストールは

pyenv install 3.7.0

で行いました

いまこういう状態です

pyenv versions system 3.5.0 3.5.0/envs/aws * 3.7.0 (set by [カレントディレクトリ]/.python-version) anaconda3-5.2.0 aws > pyenv local 3.7.0 > pyenv global 3.7.0 > pyenv --version pyenv 1.2.7 > pip --version pip 19.1.1 from $HOME/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pip (python 3.7)

aws とついてる 2 つは明示的にインストールした覚えがないのですが…
このあたりが何かおかしいのでしょうか…

OS は Mac OS 10.13.6 です

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2019/06/07 02:15

> pyenv というのを使ってもともとあった python とは別の 3.7.0 をインストールしてみたのですが ここをどういうコマンドでやったのか詳しく。パッと見て「pyenvを使わないで3.7.0をインストールしたのでは?」と思いましたので。 (あなたが「やったつもり」のことを書かれても困ります。あなたが「やった」ことを書いてもらった方がいいです)
退会済みユーザー

退会済みユーザー

2019/06/07 02:27

申し訳ありません 追記しましたが .bash_history を確認したところ pyenv でインストールしていました
guest

回答1

0

ベストアンサー

Requirement already satisfied: awscli in $HOME/.local/lib/python3.7/site-packages (1.16.172)
とあって、$HOME/.localにawscliがインストールされていることになっています。
これは「「pyenvでインストールされたPython3.7.0」以外のPython3.7.0」でインストールしたawscliではないでしょうか?
「「pyenvでインストールされたPython3.7.0」以外のPython3.7.0」が作成したawsコマンドなので、pyenvの管轄外になっていてshimsを経由して呼び出せなくなっているのでは。

$HOME/.local/lib/python3.7/site-packagesを含めて$HOME/.local/の下をチェックして、不要になっている(=「「pyenvでインストールされたPython3.7.0」以外のPython3.7.0」が作成したであろう)ファイルを確認するのが最初でしょうか。

投稿2019/06/07 02:58

quickquip

総合スコア11038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/07 03:33

.local を消して再度 pip install awscli すると動くようになったみたいです AWS公式 https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-install.html に --user というのをつけるとあってこれをつけると .local に入るみたいなのですが このオプションでインストールされたものは pyenv を使わずにインストールされるということになるんでしょうか… とりあえず解決できたのでありがとうございました
quickquip

2019/06/07 03:41

https://docs.python.org/ja/3/library/site.html#site.USER_BASE https://docs.python.org/ja/3/install/index.html#alternate-installation-the-user-scheme わたしも別方面から見つけて、 --user 付きでインストールしませんでしたか? と書こうとしていたところでした。 https://github.com/pyenv/pyenv/blob/610346802358780ebccafdf112ba0c92b6cbaef0/libexec/pyenv-rehash#L108 pyenvがshimsから起動するファイルを探すのは ${PYENV_ROOT}/versions/${version}/bin/ の下だけみたいですね。
退会済みユーザー

退会済みユーザー

2019/06/07 03:54

なるほどです 的確に原因を見つけていただいて本当にありがとうございました 助かりました
退会済みユーザー

退会済みユーザー

2019/06/07 03:57 編集

質問時点で >この状態で pip install awscli して とかいてしまったのでここを正確にコマンドかくべきでした 申し訳ありません 仕組みがよくわかってないんですが python3.7/site-packages どうこうっていうのがでてたので バージョン管理された場所にインストールされたものと思い込んでいました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問