我收到以下错误:
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?
答案 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'