当Python模块安装成功但无法导入Python(通过PyCharm IDE)时,可能是什么问题?在这种情况下以及将来当模块安装但后来无法导入时,我应该遵循什么清单来诊断问题?
对于这个特定案例,我安装了一个名为 cairo 的 Python 矢量图形模块。 http://cairographics.org/releases/pycairo-1.8.8.tar.gz
看到下图表示安装成功:
sudo python setup.py install
cairo >= 1.8.8 detected
creating pycairo.pc
creating src/config.h
running install
running build
running build_ext
running install_lib
creating /Library/Python/2.7/site-packages/cairo
copying build/lib.macosx-10.9-intel-2.7/cairo/_cairo.so -> /Library/Python/2.7/site-packages/cairo
running install_data
creating /System/Library/Frameworks/Python.framework/Versions/2.7/include/pycairo
copying src/pycairo.h -> /System/Library/Frameworks/Python.framework/Versions/2.7/include/pycairo
copying pycairo.pc -> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/pkgconfig
running install_egg_info
Writing /Library/Python/2.7/site-packages/pycairo-1.8.8-py2.7.egg-info
一切看起来都很顺利,但是后来在Python中调用这个模块时却导入失败:
ImportError: No module named cairo
。
一种可能是它安装在错误的目录中 -
/Library/Python/2.7/site-packages/
。
另一种可能性是我应该以某种方式明确告诉 python 模块的位置。即:/Library/Python/2.7/site-packages/cairo
,基于上面找到的安装脚本的输出。
这很奇怪,因为 cairo 存在于
/Library/Python/2.7/site-packages/
中,并且我能够导入其他库,例如在同一目录中找到的 PIL。
根据aIKID的建议,我尝试使用pip来获取已安装的软件包。由此,我得到了一个很长的列表,其中包括一个名为 pycairo 的模块。我尝试导入 pycairo 和 cairo,但仍然出现导入错误。有趣的是,“cairo”是在
/Library/Python/2.7/site-packages/cairo
中找到的,但是“pycairo”是在调用pip.get_installed_distributions()
之后找到的。好像发行版叫pycairo,模块叫cairo。 import cairo 应该可以工作,但无论哪种方式导入都会失败。
根据Christopher的建议,我检查了
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
目录,没有找到cairo。同样的道理,我也没有找到PIL(python 成像库)。我仍然可以导入 PIL,它可以在 /Library/Python/2.7/site-packages/
中与 cairo 一起找到。
Python 2.7.5 (default, Aug 25 2013, 00:04:04)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL, cairo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named cairo
您可以运行 python 交互模式,只需执行以下步骤即可确认您的 lib 路径:
Python 2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path
<module 'posixpath' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.pyc'>
如您所见,
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
是我系统中的路径。
您可能有多个版本的Python,但您可以通过这样做来确认您正在使用哪个版本。