0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

anacondaとvirtualenvを使う〜仮想環境でエラー解決〜

Posted at

Flaskでアプリ制作をして特に大きく躓いたところが2つあった。
一つはデータベース周り、もう一つはデプロイの際のトラブルだ。

しかしこれら二つをあっさり解決してくれたのが仮想環境だったので今回はanacondaとvirtualenvの使い方をメモしたい。

まずはanacondaとvirtualenvをインストールしよう。

👆のサイトからダウンロード。意外と簡単だった。

$  pip install virtualenv

👆こちらがvirtualenv。ターミナルでインストールしよう。これも簡単。

この二つがインストール完了したらまずはターミナルでanacondaから設定開始。

まずは以下のコマンドを打ちましょう。

conda create -n ○○○○ python=○.○

○○○○の部分は好きな仮想環境名をつけて下さい。 python=○.○はお使いのpythonバージョンを入力。

以下のコマンドで作成した仮想環境を確認できます。

conda info -e

VS CODEで立ち上げる 

次はVS CODEを開いて任意のファイルを開く。

表示→コマンドパレットから、検索窓でsettings.jsonと検索。
スクリーンショット 2022-12-03 11.16.38.png

jsonファイルが開くので中に👇を記述

スクリーンショット 2022-12-03 11.19.28.png

(何故か文字色が濁ってる・・。本来ならもと鮮やかな色になってます。)

○○○○には先ほど作成した仮想環境名を記述。

このあとは通常通りpythonファイルを作成。その後にvirtualenvを設定します。

Virtualenvの作成

ファイルを作成したらVS CODE内でターミナルを立ち上げる。

$ virtualenv ○○○○

👆のコマンドで作成。 ○○○○の部分は好きな名前を。

新たにvirtualenvファイルが作成されます。

さらに続けてこの仮想環境を有効化。以下のコマンドを入力。

$ source ○○○○/bin/activate

これで完了。意外とあっさり終わりました。
あとは必要なライブラリーをインストール。ここから普段通りにコードを書いていきましょう。

まとめ

仮想環境ってなんか敷居高そう・・って勝手に思ってて今まで食わず嫌いで放置・・しかしアプリ制作の時に痛い目に合いました。

まずデータベースの作成が出来ない!これは色々調べたけど結局謎のまま・・。多分私のMacとかVS CODE環境が原因か?

以前の記事👇で with app.app_context()を使い無理やりデータベースを作成しましたが何故かテーブルが存在しないというエラーも出る始末。

堪忍して仮想環境使いましたがあっさり解決。

そして最後にアプリが完成したらネット上に公開。この時はherokuを使用。
デプロイの際には使用したライブラリをheroku側に教える必要があるんだけど仮想環境なしだと今までインストールした全てのライブラリが集められる。
余計なライブラリも含まれるのでもちろんheroku側でエラーになる。

この時に仮想環境の恩恵が受けれる。まっさらな新しい仮想環境なので余計なライブラリーが無い。
だからデプロイの際は必要最低限の量でherokuに登録ができる。

以上のことを踏まえてこれから(面倒くさがらず)毎回仮想環境を使用したいと思う。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?