Django 補足

docker-compose でビルドしたときにdbが

 database system is ready to accept connections で止まる

⇒ -d をつけてバックグラウンド起動する。

docker-compose up --buld -d 

 

 

pythonのコンテナに入って

python manage.py runserver 0.0.0.0:8000 

 

最初にやるべきだが解説が不足していると思われるもの

  • プロジェクトスタートしたあとのgitignore設定
  • たぬき
  • たぬき

 

 

データベース操作の方法

pythonのコンテナから

python manage.py shell

 

Templateの作成

htmlファイルをpowershellのechoで作成したらUTF-16になっていてエラーになった。

クソが!

Djangoを Dockerで 

めも

docker-compose up -d

web,dbのコンテナをUp

 

docker container exec -it <コンテナID> python <yourApp>/manage.py runserver 0.0.0.0:8000

でエラー django.db.utils.OperationalError: fe_sendauth: no password supplied

 

djangoアプリのsetting.pyにDBパスワードがないとだめみたい。

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'postgres',
    'USER': 'postgres',
    'PASSWORD': 'postgres',
    'HOST': 'db',
    'PORT': 5432,
  }
}

 
 
Migrateできてないよと言われたら。
 
docker container exec -it <コンテナID> python <yourApp>/manage.py migrate

docker container exec -it <コンテナID> python <yourApp>/manage.py runserver 0.0.0.0:8000

Ubuntuでapt install できない件

 

AWS EC2で構築したubuntuにてdockerのインストールができずハマった。

いやむしろapt update の時点でこけていた。

 

 

⇒名前解決ができておらずpackageリストが取得できていない。

DNSの設定が必要。

 

/etc/resolv.conf
sudo vi /etc/resolv.conf

nameserver 8.8.8.8

 

(参考)

https://kaworu.jpn.org/ubuntu/Ubuntu%E3%81%A7%E5%90%8D%E5%89%8D%E8%A7%A3%E6%B1%BA%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84

うざい pip installの罠

ModuleNotFoundError でパッケージ不足かぁ・・・

とpip install したけど解消しないとき。

罠みたいな話だぜ。

 

websocket => websocket-client

yaml => pyyaml

 

TA-Lib はこちらの記事を参照。

 

TA-Libのインストール - ねぎとろをこぼせ

名前修飾した変数のデバッグ

Python VScodeデバッグ時にちょっとハマったこと。

 

 
__size = self._strategy_config['lotsize'] - self.current_pos

 

右辺式で値は正しく取れているのに、

変数 __size をウォッチ式で値確認しようとしてもNoneになる。

 

なんでや?

 

変数名の__は名前修飾というPython言語仕様らしい。

外部から直接この変数名でそのまま参照ができないようにする。

(private変数の代わりとして使われる。)

 

これは内部的に、_クラス名__size という用に変換する機能らしい。

よって、ウォッチ式を編集し、上記の形式にしてやれば表示することができる。

f:id:bintorooic:20210123232228p:plain

(クラス名 ここでは「MyStrategy」)

 

 

VSCode venv環境のデバッグ

ローカルPC(venv)にて、BFS-Xのバックテストをデバッグしたい。
そのままbacktest_cryptwatch.pyをデバッグ実行すると、対応するyamlの読み込みができず
エラーとなってしまった。
実行するインタープリタがvenv環境内のものになってないっぽいので
相対パスで指定されているyamlが見つからないと言われてしまう。
 
下線のcwd設定を追記することで解消。
backtest_cryptwatch.pyをエディタで開いてデバッグを始めればOK。
 
launch.json
   "configurations": [
        {
            "name""Python: Current File",
            "type""python",
            "request""launch",
            "program""${file}",
            "console""integratedTerminal",
            "cwd""${fileDirname}"
            
        }
    ]