tropicbirdのブログ

備忘録です。

【個人メモ】PyCharmでConda環境のDjangoを使用する方法(結論:解決できず。。)

PyCharmのConda環境でDjangoのプロジェクトを作成(下図)しようとしましたが、
f:id:tropicbird:20200916103027p:plain



エラーが発生(以下は一例)してうまくできませんでした。

Failed to get real commands on module "djangoProject": python process died with code 1: Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm 2020.2.1\plugins\python\helpers\pycharm\_jb_manage_tasks_provider.py", line 25, in <module>
    django.setup()
  File "C:\Users\XXX\anaconda3\envs\djangoProject\lib\site-packages\django\__init__.py", line 19, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "C:\Users\XXX\anaconda3\envs\djangoProject\lib\site-packages\django\conf\__init__.py", line 76, in __getattr__
    self._setup(name)
  File "C:\Users\XXX\anaconda3\envs\djangoProject\lib\site-packages\django\conf\__init__.py", line 63, in _setup
    self._wrapped = Settings(settings_module)
  File "C:\Users\XXX\anaconda3\envs\djangoProject\lib\site-packages\django\conf\__init__.py", line 142, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "C:\Users\XXX\anaconda3\envs\djangoProject\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\XXX\Dropbox\PycharmProjects\djangoProject\djangoProject\settings.py", line 57, in <module>
    'DIRS': [BASE_DIR / 'templates']
TypeError: unsupported operand type(s) for /: 'str' and 'str'

色々とエラーの解決を試みましたが、私の力では解決できませんでした。なので、以下の動画を参考におとなしくVirtualenv環境でDjangoのプロジェクトを作成することにしました。
www.youtube.com

Git Bashでcondaを有効にする方法

1. Git Bash上で以下のコマンドを入力すると、Git Bash上でcondaコマンドが使えるようになります。

$ . /c/users/XXX/anaconda3/etc/profile.d/conda.sh

2. 上記を毎回入力するのが面倒な場合は、以下のコマンドを入力すると、Git Bash起動後すぐにcondaコマンドが使えるようになります。

$ echo ". /c/users/XXX/anaconda3/etc/profile.d/conda.sh" >> ~/.profile

3. 最後に、以下のコマンドを入力してcondaの対象とする環境を指定します

$ conda activate <環境名>

以下の図は問題なく1.~3.の入力ができた場合の例です。(※以下の例のAnacondaの環境名はpythonProjectです。)

f:id:tropicbird:20200915145214p:plain

PyCharmでJupyterを起動する際のエラー(Notebook kernel doesn't match project interpreter)の解決方法

エラーの内容

Anacondaの環境下でPyCharmを使用する場合に、jupyter notebookのファイル(.ipynb)を作成してコードを実行すると、「Notebook kernel doesn't match project interpreter」というエラーメッセージが出てきた。エラーメッセージに関わらず、PyCharm上で起動しているJupyterは正常に動いている気もしましたが、解決方法を見つけたので記します。

解決方法

1) Anacondaのプロンプトを開く。
f:id:tropicbird:20200914225359j:plain

2) 以下のコードを入力する。myenvの箇所はプロジェクト環境名に置き換えてください。

conda activate myenv
python -m ipykernel install --user --name myenv --display-name "Python (myenv)

例えば、プロジェクト環境名がpythonProjectなら、以下の通りです。(※オレンジの塗りつぶし箇所は個人情報)

f:id:tropicbird:20200914231505j:plain

3) 最後にPyCharmを再起動すれば、PyCharm上でjupyter notebookのファイル(.ipynb)を実行してもエラーが出ないことが確認できます。もし「Notebook kernel doesn't match project kernel」という新しいエラーメッセージが出た場合は、エラーメッセージと同時に表示される「Update notebook kernel」をクリックすれば解決します。

PDFの文章を自動翻訳する際の小技(改行の対処方法)

課題

PDFの文章をDeepL翻訳やGoogle翻訳にコピペすると、貼り付け後の文章に改行が入っているため翻訳が上手くされない。改行を消したい。

解決方法

ブラウザ(Google Chromeとか)のURL欄にPDFの文章を貼り付けて、再びそれをコピペすると、改行が消える。

wgrib2を使ってGRIB2形式のファイルを読み込む際の落とし穴(Windows)

はじめに

気象データは世界共通フォーマットのGRIB2形式で提供されている場合が多いですが、そのファイルをCSV形式とかに変換する際に、NOAA(アメリカ海洋大気庁)が提供しているwgrib2を使ってデコードする必要があります。ネット上でwgrib2の使用方法を探すことができますが、次の2つの落とし穴に見事にハマってしまいました。

落とし穴1:cygwinでは上手くいかなかった。

NOAAの公式サイトClimate Prediction Center - wgrib2: how to compileではOSがWindowsの場合、cygwinを使うことを勧めています。しかし、cygwinだとwgrib2を使う際にどのコマンドラインやライブラリを別途インストールする必要があるか、いまいち不明瞭(私には分からなかった)で、何回もコンパイルに失敗しました。

落とし穴2:WSLでwgrib2を使う際はbase環境を解除する必要あり

結果的に、私はcygwinではなくWSL上でwgrib2を動かすことに成功しました。しかし、WSLがAnacondaのbase環境になっているとwgrib2が動きませんでした。この場合、以下のコマンドでbase環境を解除する必要がありました。

conda deactivate

ちなみにbase環境に戻したい時は次の通りです。

conda activate base

Windows Subsystem for Linux(WSL)が動かなくなった時の解消法。

はじめに

いつもコマンドプロンプトから「bash」を入力してWSLを起動していたが、急にWSLが起動しなくなった時の対処方法を記録に残す。

対処方法

1.コントロールパネルから「Windowsの機能の有効化または無効化」を検索し、「Windows Subsystem for Linux」のチェックボックスを「オフ」にする。
2.PCを再起動する。
3.「Windows Subsystem for Linux」のチェックボックスを「オン」にする。
4.PCを再起動する。
5.コマンドプロンプトに「bash」を入力してWSLが起動すれば問題解決。

参考にしたサイト
WSL(Windows Subsystem for Linux)が起動しない時の対処方法

plt.subplots()のaxesに関するメモ。

はじめに

plt.subplots()のaxesを理解するのに時間がかかったので、記録に残す。特に、(1,5)や(5,1)など、一つの列や行のみに図をプロットするには注意が必要である。

一般的な複数表示の記述
fig,axes=plt.subplots(3,3,figsize=(5,5))
x=[i for i in np.random.randn(10000)]
y=[i for i in np.random.randn(10000)]
axes[0,0].hist(x)
axes[1,2].hist(x)

f:id:tropicbird:20191201004717p:plain

図を1つ表示

・注意点:plt.subplots(1, 1, figsize=(5,5))ではない。

fig,ax=plt.subplots(1,figsize=(5,5))
x=[i for i in np.random.randn(10000)]
ax.hist(x)

f:id:tropicbird:20191201004731p:plain

図を縦に一列に並べたい場合

・注意点:plt.subplots(2, 1, figsize=(5,5))ではない。

fig,axes=plt.subplots(2,figsize=(5,5))
x=[i for i in np.random.randn(10000)]
y=[i for i in np.random.randn(10000)]
axes[0].hist(x)
axes[1].hist(y)

f:id:tropicbird:20191201004744p:plain

図を横に一列に並べたい場合

・注意点:この場合、(ax1, ax2)のようにaxesはタプル形式にする。

fig,(ax1,ax2)=plt.subplots(1,2,figsize=(5,5))
x=[i for i in np.random.randn(10000)]
y=[i for i in np.random.randn(10000)]
ax1.hist(x)
ax2.hist(y)

f:id:tropicbird:20191201004801p:plain