Python中没有math模块
我在使用SunOS2.10系统。我需要在Python(默认版本是2.4.6)中使用xlwt和xlrd这两个模块。在一个管理员用户的文件夹里,我找到了Python 2.7.1,所以如果我写上它的完整路径,我就可以用这个版本来代替2.4.6。我没有权限直接安装模块,所以我用了这个命令:
(path to ver 2.7)/python setup.py install --user
结果xlrd模块安装得很顺利。但是在安装xlwt模块时出现了错误:
“ImportError: No module named math”(导入错误:没有名为math的模块)
我查看了help('modules'),发现它列出了一个叫“math_failed”的模块,按我的理解应该是有一个叫math的模块。
我也尝试用Python 2.4来安装这个模块(xlwt),但出现了一个错误:
“option --user not recognized”(选项--user不被识别),
所以我理解这个选项在这个Python版本中不可用(不过math模块在那儿是可以正常工作的)。
我还尝试用以下命令本地安装整个Python:
./configure
make altinstall prefix=~ exec-prefix=~
但这也没成功,因为在“配置”过程中我收到了一个错误:
“checking whether the C compiler works... no”(检查C编译器是否工作... 不行)
我不知道怎么解决这个编译器的问题,或者如何本地安装math模块,因为我甚至找不到下载它的地方。
如果有人有任何想法,请告诉我,因为我真的卡住了,不知道该怎么办。另外,我得提一下,我在编程方面还是个新手,所以如果我说了什么愚蠢的话,请见谅:) 非常感谢大家。
2 个回答
听起来像是Python 2.7的数学模块编译得不好。可能是C语言的数学库没有正确包含进来。
在Python 2.7的命令行中,试试:
>>> import math
>>> math.__file__
然后,使用那个文件名,在命令行(在Python外面)中试试
$ ldd <filename>
(注意:我不知道在Sun OS上是否有ldd
这个命令;如果没有,希望你知道类似的命令。)
确认一下libm库是否存在。例如,在我的Linux机器上,我看到
linux-vdso.so.1 => (0x00007fffaffff000)
libm.so.6 => /lib/libm.so.6 (0x00007f3326ccf000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f3326ab3000)
libc.so.6 => /lib/libc.so.6 (0x00007f3326750000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3327180000)
如果发现缺少这个库,试着在系统中找到它,并把你的LD_LIBRARY_PATH
或者Sun OS的类似设置指向libm
所在的目录,然后再试一次ldd <filename>
。
如果这次成功了,试着重新安装xlwt
。记住,你总是需要设置好LD_LIBRARY_PATH
或者类似的环境变量(比如通过一个shell源文件)。
作为一种替代方案,下面是如何在本地安装 xlwt
,适用于 Python 2.4:
python setup.py build
python setup.py install --prefix=${HOME}/.local
请注意,.local
目录是 Python 2.6/7 中 --user
选项默认使用的目录。
这样安装了 xlwt
,但你还不能运行它。接下来,你需要正确设置你的 PYTHONPATH
:
export PYTHONPATH=${HOME}/.local/lib/python2.4/site-packages
这里假设你使用的是 (ba)sh
类型的命令行。
因为每次在新的命令行中运行 python
时都需要这样做,所以最好在一个 shell 源文件中设置你的 PYTHONPATH
。
当然,如果已经设置了 PYTHONPATH
(你可以用 $ echo $PYTHONPATH
来查看),那么它会是:
export PYTHONPATH=${PYTHONPATH}:${HOME}/.local/lib/python2.4/site-packages