python 2.7.6 f2py和ipython --pylab

时间:2015-12-21 20:25:52

标签: python matplotlib ipython f2py

我在使用f2py编译的fortran模块从ipython中的ascii文件中读取浮点数时发现了一个奇怪的行为。测试文件' test.txt'只包含一个浮点数:

5.945

我用来读取文件的子程序可以是:

subroutine read_test
implicit none
real :: dum
open(10,file='test.txt')
read(10,*) dum
print*, dum
close(10)
return
end subroutine read_test

编译

f2py -c test.f90 -m test

如果我只使用没有命令行选项的python或ipython,则读取的数字就像它们在文件中一样。

In [1]: import test
In [2]: test.read_test()
  5.94500017    

使用ipython --pylab或--matplotlib给出

In [1]: import test
In [2]: test.read_test()
  5.00000000    

使用python 2.7.6,ipython 2.3.0,numpy 1.8.2和matplotlib 1.4.3。我也试过ipython 3.0.0,4.0.0和4.0.1,numpy 1.9.2和1.10.2,以及matplotlib 1.4.3或1.5.10。只切换到python 2.7.10似乎改变了预期的行为。

有人可以向我解释出现了什么问题。不幸的是,2.7.6是我们整个环境的默认设置,升级会有点麻烦。

1 个答案:

答案 0 :(得分:0)

足够的随机Google搜索会点击这些numpyipython错误报告。

TL; DR,检查locale.getlocale()返回的内容。问题可能是您的区域设置使用.以外的其他内容来分隔小数,而export LC_ALL=C可以解决您的问题。

我还假设你在Mac上?