我正在从openstack复制一些代码片段,但是当它运行到:
import six.moves.xmlrpc_client as xmlrpclib
我收到以下错误:
import six.moves.xmlrpc_client as xmlrpclib
ImportError: No module named xmlrpc_client
我已安装six
包。如何解决这个问题?
我正在使用python 2.7开发MacOS。
我尝试安装但失败了:
lichaos-MacBook-Pro:common lichao$ sudo pip install --allow-unverified xmlrpclib xmlrpclib
Collecting xmlrpclib
xmlrpclib is potentially insecure and unverifiable.
Downloading http://effbot.org/media/downloads/xmlrpclib-1.0.1.zip
Installing collected packages: xmlrpclib
Running setup.py install for xmlrpclib
changing mode of build/scripts-2.7/xmlrpc_handler.py from 644 to 755
changing mode of build/scripts-2.7/xmlrpcserver.py from 644 to 755
changing mode of build/scripts-2.7/echotest.py from 644 to 755
changing mode of /usr/local/bin/echotest.py to 755
changing mode of /usr/local/bin/xmlrpc_handler.py to 755
changing mode of /usr/local/bin/xmlrpcserver.py to 755
Successfully installed xmlrpclib-1.0.1
$ sudo pip show six
---
Name: six
Version: 1.8.0
Location: /Library/Python/2.7/site-packages
Requires:
但是当我运行程序时,我仍然遇到同样的错误。如何解决问题?
答案 0 :(得分:7)
six.moves
是虚拟命名空间。它提供了对在Python 2和3之间重命名的包的访问。因此,你不应该安装任何东西。
通过从six.moves.xmlrpc_client
导入,开发人员不必处理它位于Python 2中的xmlrpclib
和Python 3中的xmlrpc.client
的情况。这些是标准库的一部分。
该映射已添加到six
version 1.5.0;确保您拥有该版本或更新版本。
Mac预装了/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
中的六个版本1.4.1,这会干扰您在site-packages
中安装的任何版本(在sys.path中列出的最后一个版本)。
最好的解决方法是使用virtualenv并在其中安装自己的six
版本,以及此项目所需的任何其他内容。为新项目创建一个新的virtualenv。
如果您必须在系统级别安装此功能,那么对于此特定项目,您必须删除/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
路径:
import sys
sys.path.remove('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python')
这将从您的路径中删除各种OS X提供的包,仅用于运行Python; Apple会根据自己的需要安装这些产品。
答案 1 :(得分:0)
pip uninstall six
pip install six
应该解决问题。