我正在尝试导入fabric.api
并遇到问题。我使用 pip 安装了 Fabric,当我import fabric
在解释器中运行时它工作正常。
但是当我from fabric.api import *
这样做时,它会抛出一个错误,提示“没有名为 api 的模块”。我正在使用Python 2.7。我在这里缺少什么?
Python 2.7.10 (default, Oct 6 2017, 22:29:07)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> version
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'version' is not defined
>>> import fabric
>>> import fabric.api
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named api
>>> from "fabric.api" import *
File "<stdin>", line 1
from "fabric.api" import *
^
答案1
Fabric
从 v1 到 v2 进行了一些主要的 API 更改;要查看更改,请访问从 Fabric 1.x 升级:API 组织。特别是,fabric.api
被删除,所有内容都直接从顶级包导入。这意味着您的脚本不适用于当前Fabric==2.0.1
版本;您有两种可能性:重写代码以兼容 v2,或安装最新的 v1 版本:
$ pip install "fabric<2"
答案2
fabric.api
是版本的一部分
1.14
你安装了
2.4
请检查版本
答案3
对于那些仍在努力应对变化或拥有一长串基于 Fabric<2 的工具但想要迁移到 python 3 的人,您可以使用
pip install fabric3
获得与 python 3 兼容并使用 Fabric<2 的工作版本。