【问题标题】:Why do I get a syntax error when trying to run a fab module?为什么在尝试运行 fab 模块时会出现语法错误?
【发布时间】:2018-09-24 02:19:23
【问题描述】:

我是第一次尝试使用 fabric,我正在尝试从他们的文档中运行 hello world 示例: http://docs.fabfile.org/en/1.14/tutorial.html

我创建了一个名为 fabfile.py 的本地文件,其中包含以下代码行:

def hello():
   print("Hello world!")

现在我尝试在 python 解释器中运行它:

> >>> import fabric
> >>> import fabfile
> >>> fab hello   File "<stdin>", line 1
>     fab hello
>             ^ SyntaxError: invalid syntax
> >>> from fabfile import hello

“from fabfile import hello”有效,因此如果我尝试对垃圾关键字执行相同操作,它必须看到文件和 hello 函数,因为它会出错。但是,然后我尝试使用“fab function”语法运行代码,它会抛出“无效语法”错误。

你能告诉我我做错了什么吗?

编辑: 如果我尝试直接在终端中运行它也不起作用

[user@host folder]$ bash
[user@host folder]$ fab hello
No idea what 'hello' is!
[user@host folder]$ 
[user@host folder]$ ls
fabfile.py  fabfile.pyc  test-connect.py  TST_SYBASE.txt

【问题讨论】:

  • 我假设您正在运行某种类型的 unix,现在 Windows 顺便说一句...
  • 是的,使用 RHEL 7
  • 另外,我建议对您的标题进行编辑,因为问题的范围与语法错误不同。如果你有机会,请随时对这个编辑进行同行评审:)

标签: python syntax fabric


【解决方案1】:

首先要确认 FABRIC 的文档已过时

This is an open issue on git.

fabfile.py 需要有正确的装饰器:

from fabric import task

@task
def hello(ctx):
  print("Hello World")

第二次

文档显示fab hello 需要在更高级别执行,在shell 中,例如bash

确保您位于包含您的结构文件的 pwd 中。

运行fab hello

这应该是这样的:

Twoodys-MacBook-Air:fabQ twoody$ ls
fabfile.py
Twoodys-MacBook-Air:fabQ twoody$ fab hello
Hello World
Twoodys-MacBook-Air:fabQ twoody$ 

【讨论】:

  • 也不行 :( [user@hostname folder]$ fab hello 不知道 'hello' 是什么!
  • 完成 :D [user@hostname 文件夹]$ ls fabfile.py fabfile.pyc test-connect.py TST_SYBASE.txt
  • @Lehliana 你需要注意这个decorator,因为它被认为是python语言的高级特性。它直接修改函数hello(),用绒毛包裹它,我自己没有研究过。看起来你的织物之旅有很多 TODO,所以也许不要迷失在装饰者的兔子洞里:p
猜你喜欢
  • 2020-05-14
  • 2022-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 2021-06-27
相关资源
最近更新 更多