Python导入错误:没有名为Fabric.api的模块?

时间:2015-10-15 12:39:59

标签: python fabric importerror

我收到以下错误:

Traceback (most recent call last):
  File "drayd.py", line 2, in <module>
    from fabric.api import *
**ImportError: No module named fabric.api**

我使用以下方式运行我的程序:

python drayd.py

这些是我的进口商品:

import os,pprint
from fabric.api import *
import time
import argparse
import ConfigParser

我没有一个名为fabric的文件,因为其他答案解决方案是,我使用pip安装了结构,但它仍然无法工作,任何建议? 我正在使用OSX终端。

注意:我意识到我安装的结构没有链接到python安装,即它无法识别通过pip安装结构。 我使用osx默认的python版本2.7 如何将结构安装链接到python?

4 个答案:

答案 0 :(得分:5)

根据 Robert Lujo的答案,您必须将结构降级到V1,而不是将其升级到版本3

经过研究,我发现当你

pip install fabric

它的版本是2. *,与Python 3不兼容

相反,简单的解决方案是

pip uninstall fabric
pip install fabric3

这肯定可以解决问题!

答案 1 :(得分:1)

你必须更明确。我创建了一个新的virtualenv,安装了fabric,一切都很好。您需要粘贴有关您的环境的更多来源或更多信息。

$ cd /tmp
$ virtualenv test && source test/bin/activate
$ pip install fabric
...
Successfully installed fabric-1.10.2
$ python
>>> from fabric.api import *
>>> 

让我们看看你有什么:

$ python
>>> import pkgutil
>>> [name for _, name, _ in pkgutil.iter_modules()]
... paste THIS output somewhere ...

PS。在virtualenv / pyenv中进行所有测试/项目真的很好,这样你就不会与当前/未来的项目发生冲突。

答案 2 :(得分:0)

我的问题的答案就在这里:

<强> PIP install and Python path

我必须添加我的软件包的位置(不在sys.path中安装)所以我不得不手动添加它们 使用pip show查找软件包的位置并将其添加到.bash_profile 正如@Javier Buzzi所说,我将接受这个建议,并从virtualenv运行我的python代码。

答案 3 :(得分:0)

如果您具有基于较早的结构版本(即1.x)的fabfile.py,则会发生类似的问题。当前Fabric的最新版本是2.x,其中is not backward compatible

  

从2.0版本开始,Fabric 2的功能奇偶校验未达到100%   用1.x!一些功能已被明确删除,但其他功能   只是还没有移植,

Regarding fabric.api-它不再存在:

  
      
  • 通过fabric.api导入所有内容
  •   
  • 已删除
  •   
  • 所有有用的导入现在都可以在顶层使用,例如从结构导入连接中。
  •   

建议将fabfile.py从1.x升级到2.x for lot of reasons(例如与Python 3兼容-具体来说,我们现在支持2.7和3.4 + ),但是如果您仍然不想升级,可以卸载2.x和install 1.x,例如

pip uninstall fabric
pip install 'fabric<2.0'