VS Codeでvenvがうまく動作しなくなった話

結論 venvをあきらめて、Pipenvを導入すればなぜか解決した。 経緯 Pythonの開発環境にVS Codeを使っていましたが、ある日突然、venvで作った環境が見えなくなりました。 PowerShellからは切り替えができるので、venv自体は正しく動いているようでした。 PythonとVS Codeをクリーンインストールしても状況は変わりませんでした[1]。 Pipenvの使い方 最近はPipenvというものがあるらしいので、それを導入することとしました[2][3]。 pip install pipenv 以下のように環境変数を設定することで、プロジェクトのフォルダ直下に仮想環境を構築してくれます。 PIPENV_VENV_IN_PROJECT=true VS Code上にフォルダを作成し、その直下で仮想環境を作成します。 コマンドはVS Code上のPowerShellで行いました。 例えば以下のようになります。パスやPythonのバージョンはご自身の環境に合わせてください。 *pythonの後に半角スペースがあるのでうっかり詰めないでください。 *venvファイルが作成されるという情報もありますが、私の場合はPipfileのみ作られました。 PS PS C:\Users\User Name\Documents\CODE\Python\Test> pipenv install --python 3.8 VS Code上でF1キーを押して、「reload」を検索して実行します。 これで左下のPythonのバージョンセレクトから環境選択できるはずです。 仮想環境から抜けるときは以下のコマンドを使います。 deactivate 参考文献 [1] sota0726 「VScodeを完全にアンインストールする方法(windows10)「拡張機能のホストが予期せずに終了しました。」を改善するために」閲覧日:2020/09/13 https://www.atmarkit.co.jp/ait/articles/1810/12/news026.html [2] KRiver1 「pyenv、pyenv-virtualenv、venv、Anaconda、Pipenv。私はPipenvを使う。」閲覧日:2020/09/13 h

Python:グローバル変数 -Global Variables-

Tell the readers who do not read Japanese
Important thing is translated in English that is colored green.
I'm not good at English,so I apologize you if you struggle to read my page.
Summary:
This page is written about global value on Python.
You have to declare a 'global' to use global variables in Python.
I show some example ,and in last describe how to use global variables in class.

 こんばんは。
ここしばらくロボットではなくPythonの話ばかりですね。
でもブログとかに書いておかないと忘れちゃうのでご勘弁を。

では今日はPythonでのglobal変数の扱いです。
C言語のようにアクセスするとハマるので確実に一回は検索することでしょう。
そして、検索しても見つからなかったクラス内のグローバル変数の使い方について書きます。
��たぶんちょっと考えればわかるからあえて書いてないのかもしれませんが・・・)

それでは早速一番基本的な使い方を示します。
関数内でglobal宣言することで、グローバル変数を使用できます。
I show how to use simple global variables.
You can use a global variables by declaring a 'global' in the function

>>> def gl_test1():
        global g1
        print g1

>>> gl_test1()
0


次に、グローバル変数の値を変更してみます。
値が保存され、呼び出しのたびに加算されているのがわかります。
Next I try to change the value of a global variables.
You can recognize that saved the value adding one to every call.

>>> g2 = 0

>>> def gl_test2():
        global g2
        g2 += 1
        print g2

>>> for i in range(10):
        gl_test2()

1
2
3
4
5
6
7
8
9
10


最後に、クラスからグローバル変数を使う例を示します。
このように'self'を付けないとクラス内でグローバル変数にアクセス出来ません。
またグローバル変数を使うときは、安全性を考えてメソッドを使って値のやり取りをするのがお行儀の良いプログラムらしいです。
なので一番最後のように直接アクセスするような使い方はやめましょう。
Last, I show example of using global variables at Class.
You can access a global variables from the class by putting 'self' as an example.
I recommend that you access to the global variables via the method.


>>> class GlTest(object):
        g = 0
   
        def get(self):
                global g
                return self.g
        
        def add(self, x):
                global g
                self.g += x

>>> gc = GlTest()
>>> gc.get()
0
>>> gc.add(100)
>>> gc.get()
100
>>> gc.g
100


地味にこのselfをつけるのがわからず少し悩んだので書いておきました。

ちなみに今回から記事の一部を英語化しました。
これはアクセス解析したら外国の人もいるということがわかったのと、英語の勉強です。
英語間違ったり、不自然だったりしたら教えてください。
それでは今回は以上です。
Thanks you for read my page.

コメント

このブログの人気の投稿

C++11のためにGCCの最新版をインストールする

分解:Logicool M570

MOCO'Sキッチンのフォントに似せるβ版