日々精進

新しく学んだことを書き留めていきます

サーバでコマンドを実行すると「shell-init: error retrieving current directory: getcwd: cannot access parent directories」エラー

原因はカレントディレクトリが既に存在しなくなっていることだった。 ターミナルで開いているディレクトリをWinSCPで削除し、その後コマンドを実行すると発生した。 存在するディレクトリにcdしてからコマンドを実行すると直った。

参考:

arika.org

sshでログインしようとすると「Connection to xxx closed.」「Exit status 254」エラー

CentOSの場合は以下の手順で直る。

/etc/ssh/sshd_configUsePAM yesUsePAM no に変更する

これでなぜ直るのかは不明。。 UsePAMはPluggable Authentication Moduleを使えるようにするかの設定で、 Pluggable Authentication Moduleは元々何も設定してないので使ってないと思っていたけど何か動いてたのかな。。

参考:

unix.stackexchange.com

open-groove.net

pythonでファイルを読み込む場合のpathを書く場合の注意点

"test/data/img.jpg"のように指定すると、working directoryの位置に依存してしまう。 pythonファイルの実行方法は

  • Flaskサーバから実行する
  • 開発環境でtestを実行する
  • CIサーバでtestを実行する

のようにいくつかあり、それぞれworking directoryが異なることが多いので 以下のようにすべき。

  • Rootにしたいフォルダのinit.pyに以下を書く
from pathlib import Path

ROOT_PATH = str(Path(__file__).parent)
  • 他のファイルはこのファイルをimportしてROOT_PATHからの相対パスの形でパスを書く
from foo_service import ROOT_PATH
os.environ["LOGGING_CONFIG"] = f"{ROOT_PATH}/test/logging.conf"

参考:

qiita.com

GitHubの検索窓はOrganization単位で色んな検索条件で検索出来る

今までGitHub画面左上の検索窓でWikiも検索出来るのに気付かず、Wikiは全文検索出来ないからダメだと思っていたが、できるじゃん。。 色々検索条件も設定出来るっぽい。

help.github.com

今までナレッジ共有に別のWikiサービスを使ってたけど、これでGitHubにナレッジ書く場所がまとめられて良かった。

pytestでオブジェクトを複数テスト間で使い回す方法

例えば、Tensor Flowのコードを含むクラスの場合、Tensor FlowがGlobalな状態を持つので 同じクラスのオブジェクトを複数回作り、そのたびにcheckpointを読み込むとエラーになる。

なので、その場合はconftest.pyに以下を書く。

@pytest.fixture
def foo_service():
    return FooService()

テストメソッドで以下のようにするとFooServiceのオブジェクトをInjectionしてくれるので、オブジェクト生成が一回になる。

@pytest.fixture(scope='class', autouse=True)
def test_extract(self, foo_service):

参考:

qiita.com