我有一个virtualenv,并且在那个virtualenv我尝试运行fabfile。
fabfile就像这样开始:
import httlib2
当我尝试执行
时fab --list
获取可用任务列表,我得到:
Traceback (most recent call last):
File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/fabric/main.py", line 658, in main
docstring, callables, default = load_fabfile(fabfile)
File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/fabric/main.py", line 165, in load_fabfile
imported = importer(os.path.splitext(fabfile)[0])
File "/Users/user/Documents/code/fabfile.py", line 5, in <module>
import httplib2
ImportError: No module named httplib2
当我这样做时:
$ python
Python 2.7.5 (default, Aug 13 2013, 10:53:21)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import httplib2
>>>
它进口得很好!
我检查了哪个工厂正在执行:
$ which -a fab
/Users/user/.virtualenvs/myenv/bin/fab
/usr/local/bin/fab
/usr/local/bin/fab
我的$ PATH以:
开头$ echo $PATH
/Users/user/.virtualenvs/myenv/bin:
我在这里遗漏了一些东西,但由于某种原因,当我执行fab时它没有看到httplib2。似乎错误的工厂正在执行(即不是我的$ PATH中发现的第一个),但我无法解释如何或为什么。
如果我冻结了点子,我得到:
$ pip freeze
Fabric==1.8.3
ecdsa==0.11
httplib2==0.9
paramiko==1.12.4
pycrypto==2.6.1
wsgiref==0.1.2
非常感谢任何帮助。
答案 0 :(得分:1)
我不明白为什么,但是在停用virtualenv并重新激活它之后,现在一切正常......
答案 1 :(得分:-1)
$ PATH由您的终端使用。你想要$ PYTHONPATH,或者在python中: import sys; sys.path.append(&#34; somedir&#34)
有关python中的环境变量的更多信息,请参阅https://docs.python.org/2/using/cmdline.html#environment-variables。
看起来像你的&#34; fab&#34;命令使用的是与您的pip和其他终端会话来源不同的解释器。您可以使用上述方法之一更改路径,在python env fab中安装httplib2将运行,或强制fab使用您的其他python。