投稿

7月, 2018の投稿を表示しています

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

ゼロから作るDeep Learningを読んで その2

イメージ
前回からオライリージャパンの ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 を読み続けています。 今回はサンプルコードの実行途中で躓いた点を書いておきます。 各サンプルコードはその章のディレクトリで実行することになっています。 例えば、7章であれば以下のような場所になります。 ~/deep-learning-from-scratch-master/ch07 共通のモジュールはその上層のディレクトリにあるので、以下のようにパスを通します。 import sys, os sys.path.append(os.pardir) from common.util import im2col しかし、これではパスが通っていないのかim2colをimportできませんでした。 そこでいろいろ調べたところ、以下のようにやるとうまくいきました。 sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))) これで、ちゃんと上のディレクトリが追加されました。 sys.pathをプリントすればパスが通っているか確認できます。 print(sys.path) 以上が私が詰まった部分です。 また、他におかしいところがあればブログに書きたいと思います。   

ゼロから作るDeep Learningを読んで その1

イメージ
オライリージャパンの ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 を読み始めました。  まだ途中ですが、できる限り平易な文章で書いてあるので読みやすいです。 Pythonを使って実装するので、ちょこちょこ実装しながら確認できるのがよいです。 やりながら詰まったところがあるので、メモ代わりに書いておきます。 4章 ニューラルネットワークの学習 4.2.3 ミニバッチ学習 ここで、以下のような訓練データからを読みだすスクリプトを実行します。 import sys, os sys.path.append(os.pardir) import numpy as np from dataset.mnist import load_mnist (x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, one_hot_label=True) print(x_train.shape) print(t_train.shape) すると、以下のようにエラーが発生します。 Traceback (most recent call last): File " ", line 1, in File "../dataset/mnist.py", line 117, in load_mnist dataset['train_label'] = _change_ont_hot_label(dataset['train_label']) NameError: name '_change_ont_hot_label' is not defined これはmnist.pyの中に原因があるようです。 mnist.pyは以下の場所にあります。 /deep-learning-from-scratch-master/dataset 117行目のエラー箇所を見に行くと、_change_ont_hot_labelという関数を呼び出しています。 これが未定義なようです。 どうも単語がおかしいのですが、該当する関数が定義されてないかファイルを