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

pytextcheck

 お久しぶりです。
最近はブログではなく、別のWebページを作成に勤しんでいました。
私の記事を待ってくれている人がいたら、すみませんでした。

今回はpytextcheckというPythonから使用できるテキストチェッカーを作ったので紹介します。

このモジュールはテキスト形式の文書の中身を検索して、特定の語句を検出します。

Texで論文を書くために作成しました。

論文のように公開する文書内の語句には、いくつか規定があります。
例えば、ある学会では「行う」は「おこなう」、「。」は「.」と表記するといった決まりがあります。
文書を書いたあとに、1つずつ検索して禁止語句が含まれていないか探すのは大変面倒でした。
この前書いた論文では 208個も使用してはいけない漢字があり、とても検索する気が起きませんでした。
そこで、 今回紹介する、pytextcheckを書きました。
使い方は簡単で、以下のようにたった3行のコードで使用できます。

import pytextcheck
t = Text()
t.check_text('test.tex', 'basic.txt', 'sice.txt')

ダウンロードと詳しい説明はここからお願いします。
サンプルではtest.tex内で、basic.txtとsice.txtに記述された語句を使用されているか調べます。
もし使用されていらば、該当する語句とそれが含まれる行番号を表示してくれます。
現状では、あまり文書のコンテキストを読む機能はありませんので、漢字があれば拾ってしまいます。
例えば、「~の時」は「~のとき」と表記しなけらばならないとします。
そこで、禁止語句リストに「時」を入れると、「時間」「時計」なども検出するということです。
回避方法をいくつか思いつきましたが、用途的には余計なことをしてfalse negative(偽陰性)を発生させるよりは、
false positive(偽陽性)は許容するということにしました。
このあたりの問題は、もう少し色々な人に使ってもらって検討したいと思います。

 余談ですが、このモジュールを作成するにあたり、文字コードと改行コードには苦労しました。
改行コードは各OSで以下のようになっています。
・Windows
\r\n
・Mac (9以下)
\r
・Unix
\n

このようにOSによってコードが違うので、読み込んだ文字列から改行コードを削除しています。
また、Pythonで扱いやすいよう、Unicode形式に変換して検索を行っています。
今回で文字列を扱うときの注意点がなんとなくわかってきたのは、収穫でした。


次回もへばらない程度に、気を抜きながら何か記事にしたいと思います。
気長にお待ちください。

コメント

このブログの人気の投稿

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

分解:Logicool M570

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