1

sshfsリモートホストがローカルロケール(LC_ALL)をサポートしていない場合、マウントに失敗します。グーグル検索は、bashでこの問題を処理する方法についてwww.knoppixforum.deを私に指摘しました。

しかし、私はから呼び出す必要がありsshfsますpython。(失敗した)コマンドは次のようになります。

import subprocess
subprocess.check_call(['sshfs', 'HOST:~/SRC', '~/DST'])

別の検索で、「Pythonでロケールエンコーディングを設定する」という指摘がありました。そして、私はそれが次のようになるはずだと思いました:

import os, subprocess
env = os.environ.copy()
env['LC_ALL'] = 'en_US.UTF-8'
subprocess.check_call(['sshfs', 'HOST:~/SRC', '~/DST'], env = env)

しかし、それも機能しません。sshfsが環境変数に適合しないsshの新しいプロセスをフォークするため、失敗すると思いますか?

エラーメッセージは常に次のとおりです。remote host has disconnected

4

1 に答える 1

0

ハハ、私は自分をだましました!私の上記のアプローチは機能します。テストに使用したマシンでは「en_US.UTF-8」が利用できないことを除いて。bash でのテスト中に、以前は「de_DE.UTF-8」を使用していました。

LC_ALL='C' を使用すると、すべてが期待どおりに機能します。したがって、正しい解決策は次のようになります。

import os, subprocess
env = os.environ.copy()
env['LC_ALL'] = 'C'
subprocess.check_call(['sshfs', 'HOST:~/SRC', '~/DST'], env = env)
于 2012-10-22T13:37:47.240 に答える