如果远程主机不支持本地区域设置(LC_ALL),则sshfs挂载失败。Goolge search向我介绍了如何在bash上处理这个问题的www.knoppixforum.de。
但我需要从python给sshfs打电话。(失败的)命令如下所示:
import subprocess
subprocess.check_call(['sshfs', 'HOST:~/SRC', '~/DST'])另一个搜索让我找到了'Set locale encoding in 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派生了一个新进程,而这个进程不熟悉我的env变量?
错误消息始终为:remote host has disconnected
发布于 2012-10-22 21:37:47
哈哈,我自欺欺人!我的上述方法确实有效。除了'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)https://stackoverflow.com/questions/12999774
复制相似问题