我正在使用Fabric 1.01,在我的fabfile中我正在使用put命令.这条线是:
put('file.tar.gz', '~/file.tar.gz')
Run Code Online (Sandbox Code Playgroud)
服务器位于env.hosts列表中. file.tar.gz与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
Run Code Online (Sandbox Code Playgroud)
谁知道这是从哪里来的?该文件肯定存在于我的本地机器上,我也尝试将第二个put()参数作为'/ server/path/to /',我尝试使用该文件的绝对路径进行第一次put()争论,一切都无济于事.
Art*_*are 20
我发现此错误消息颇具误导性.打印的消息是:
Fatal error: put() encountered an exception while uploading 'local/path'
Underlying exception:
No such file
Run Code Online (Sandbox Code Playgroud)
这导致你认为问题是Python不会看到文件local/path.我不确定从来没有这种情况,但在原始问题和我的情况下,问题都与此无关,而问题是无法找到远程文件夹.由于此命令不会自动在其找不到的路径中创建任何文件夹,因此当它找不到远程路径中的任何远程文件夹时,它将失败.
在我的特殊情况下,问题是我提供了一条路径,我打算在远程Linux系统上将其解释为绝对路径,但是我没有提到最初的路径/.
dan*_*nny 10
哎呀,在匿名问题时我很懒.我的代码包含代字号:
put('file.tar.gz', '~/file.tar.gz')
Run Code Online (Sandbox Code Playgroud)
显然Fabric使用我本地机器的主目录而不是服务器进行了波浪插值.用服务器上的显式路径替换波浪号后,它工作正常.