ごちゃついたPythonの環境を整備したい
この記事は最終更新日から1年以上が経過しています。
![](https://firebasestorage.googleapis.com/v0/b/webdevelopers-1886f.appspot.com/o/images%2FiStock-1147369722.jpg?alt=media&token=dc97d39c-41fc-49c6-97de-332861007a96)
弊社の新しいプロジェクトが昨日からスタートしたのですが、新しいプロジェクトにPython3 + Djangoを導入する事となりました。
いざPythonだといいながらメンバー間の環境はバラバラで私のmacはアナコンダやらpip、pip3、pyenvやら酷くごちゃついておりました。。
皆で共有するときはnpmみたいな感じがわかりやすいなと思っていたらPipenvというものがあるということがわかりました。
早速インストール!
homebrewでインストールします。
$ brew install pipenv
作業ディレクトリに移動して下記コマンドを打ちました。
$ pipenv install
作業ディレクトリにPipfileとPipfile.lockというファイルができていました。package.jsonみたいなものだろうと予想。
お試しでslackのapiを叩くためのパッケージをインストールします。
$ pipenv install slackclient
そして簡単なプログラムを書きました!
import os
import slack
client = slack.WebClient(token=os.environ['SLACK_TOKEN'])
client.chat_postMessage(
channel="#general",
text="燃えよ唐辛子🌶燃える程美味しい!"
)
プログラムの実行
$ pipenv run python hogehoge.py
しかしながら、仮想環境からslackのapiトークンが読み取れないとのエラーが出てしまいました。。
![](https://firebasestorage.googleapis.com/v0/b/webdevelopers-1886f.appspot.com/o/images%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202021-12-08%2014.46.54.png?alt=media&token=5c7b8c02-651c-4662-afc9-f52a1e61378b)
.env
に環境変数を記述します。
export SLACK_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
また、pipenvの作る仮想環境は、pcの深いところに作られるとのことで、これではPythonの環境を整備したい本来の目的が達成できないでません。
なので下記の環境変数を指定することで、作業ディレクトリ内に仮想環境がつくられます。
私は自信のmacの.zshrc
に記述しました。
$ export PIPENV_VENV_IN_PROJECT=true
ではslackのapiを叩くファイルを実行します。
$ pipenv run python hogehoge.py
成功しました!
![](https://firebasestorage.googleapis.com/v0/b/webdevelopers-1886f.appspot.com/o/images%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202021-12-08%2014.44.00.png?alt=media&token=538d145d-5bf9-4270-9532-6f8dcd12d89d)
pipenvの仮想環境も同じディレクトリに作られていました!
![](https://firebasestorage.googleapis.com/v0/b/webdevelopers-1886f.appspot.com/o/images%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202021-12-08%2014.45.30.png?alt=media&token=7743ed94-f45d-4e7f-9b86-1a5aeb34dd59)
仮想環境に入るには
$ pipenv shell
で抜ける場合は、exitでOKです。
下記が参考にしたドキュメントです。
ここまでお読みいただき、ありがとうございました。