Команда putting Fabric дает фатальную ошибку: исключение "Нет такого файла"
Я использую Fabric 1.01, и в моем fabfile я использую команду put. Линия:
put('file.tar.gz', '~/file.tar.gz')
Сервер находится в списке env.hosts. file.tar.gz
находится в том же каталоге, что и файл fabfile, и я запускаю код из этого каталога.
Когда я запускаю код, он доходит до того момента, когда он запускает эту команду put. Перед сбоем выход:
[[email protected]] 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() аргумент, все безрезультатно.
Ответы
Ответ 1
Упс, я ленился, когда анонимировал вопрос. Мой код содержал тильду:
put('file.tar.gz', '~/file.tar.gz')
По-видимому, Fabric сделала интерполяцию тильды, используя домашний каталог моей локальной машины, а не сервер. После замены тильды на явный путь на сервере он отлично работает.
Ответ 2
Я нашел это сообщение об ошибке довольно ошибочным. Печатное сообщение:
Fatal error: put() encountered an exception while uploading 'local/path'
Underlying exception:
No such file
Что заставляет вас думать, что проблема в том, что каким-то образом Python не видит файл в local/path
. Я не уверен, что это никогда не бывает, но как в случае исходного вопроса, так и в моем случае проблема не имеет к этому никакого отношения, и вместо этого проблема заключалась в том, что удаленная папка не могла быть найдено. Поскольку эта команда не будет автоматически создавать какие-либо папки в пути, который она не находит, она терпит неудачу, если она не может найти ни одну из удаленных папок на удаленном пути.
В моем конкретном случае проблема заключалась в том, что я предоставил путь, который я намеревался интерпретировать как абсолютный в удаленной системе Linux, но я остановился на первоначальном /
.