Fabric put命令给出致命错误:\'No such file\'异常

问题描述

|| 我正在使用Fabric 1.01,在我的fabfile中,我正在使用put命令。该行是:
put(\'file.tar.gz\',\'~/file.tar.gz\')
该服务器在env.hosts列表中。 “ 1”与fabfile位于同一目录中,并且我正在此目录中运行代码。 当我运行代码时,它将到达运行此put命令的地步。在输出失败之前:
[uname@site.com] put: file.tar.gz -> ~/file.tar.gz

Fatal error: put() encountered an exception while uploading \'file.tar.gz\'

Underlying exception message:
    No such file
有人知道这是哪里来的吗?该文件肯定存在于我的本地计算机上,并且我也尝试了第二个put()参数作为\'/ server / path / to / \',并且我尝试使用文件绝对路径作为第一个put()参数,全部无效。     

解决方法

        我发现此错误消息颇具误导性。打印的消息是:
Fatal error: put() encountered an exception while uploading \'local/path\'

Underlying exception:
    No such file
这使您认为问题在于Python无法以
local/path
的格式查看文件。我不确定这种情况永远不会发生,但无论是在原始问题还是在我的情况下,都与该问题无关,而是问题是找不到远程文件夹。由于此命令不会在其找不到的路径中自动创建任何文件夹,因此当它无法在远程路径中找到任何远程文件夹时,它将失败。 在我的特殊情况下,问题在于我提供了我打算在远程Linux系统上解释为绝对路径的路径,但我省略了最初的“ 5”。     ,        糟糕,匿名化问题时我很懒。我的代码包含一个波浪号:
put(\'file.tar.gz\',\'~/file.tar.gz\')
显然,Fabric使用本地计算机(而不是服务器)的主目录进行了波浪号插值。将波浪号替换为服务器上的显式路径后,它可以正常工作。