fftconvolve在PyDev中的ImportError

时间:2018-07-16 04:19:03

标签: python python-3.x numpy pydev

使用以下代码

import numpy as np
from scipy.signal import fftconvolve
import matplotlib.pyplot as plt

给出以下堆栈跟踪

Traceback (most recent call last):
  File "/Users/Erik/Documents/workspace- 
python/src/pywavelets/Problem1/Problem1.py", line 8, in <module>
    from scipy.signal import fftconvolve
  File "/Users/Erik/anaconda3/envs/tensorflow/lib/python3.6/site- 
packages/scipy/signal/__init__.py", line 311, in <module>
    from . import sigtools, windows
  File "/Users/Erik/anaconda3/envs/tensorflow/lib/python3.6/site- 
packages/scipy/signal/windows/__init__.py", line 40, in <module>
    from .windows import *
  File "/Users/Erik/anaconda3/envs/tensorflow/lib/python3.6/site- 
packages/scipy/signal/windows/windows.py", line 9, in <module>
    from scipy import fftpack, linalg, special
  File "/Users/Erik/anaconda3/envs/tensorflow/lib/python3.6/site- 
packages/scipy/fftpack/__init__.py", line 99, in <module>
    from .basic import *
  File "/Users/Erik/anaconda3/envs/tensorflow/lib/python3.6/site- 
packages/scipy/fftpack/basic.py", line 12, in <module>
    from . import _fftpack
ImportError: 
dlopen(/Users/Erik/anaconda3/envs/tensorflow/lib/python3.6/site- 
packages/scipy/fftpack/_fftpack.cpython-36m-darwin.so, 2): Symbol not 
found: _main
  Referenced from: 
/Users/Erik/anaconda3/envs/tensorflow/lib/python3.6/site- 
packages/scipy/fftpack/_fftpack.cpython-36m-darwin.so
  Expected in: flat namespace
 in /Users/Erik/anaconda3/envs/tensorflow/lib/python3.6/site- 
packages/scipy/fftpack/_fftpack.cpython-36m-darwin.so

我尝试使用pip重新安装numpy和scipy,但未执行任何操作。

也许我需要在PYTHONPATH中指定一些库?我在其他地方读过,PyDev应该自动检测必要的导入,并且在没有指定任何外部目录的情况下,numpy和tensorflow似乎可以正常工作。

我确实知道该错误是特定于PyDev的,因为代码可以在控制台中很好地执行。

有人可以帮助我指出问题所在吗?谢谢!

1 个答案:

答案 0 :(得分:1)

如果它在控制台中可以正常运行,而在PyDev中不能,请检查两种情况下您的环境变量是否相同。

即:

for key, val in sorted(os.environ.items()):
    print('%s=%s' % (key, val))

同时运行两者,然后将输出保存在不同的文件中,然后进行比较以了解有什么不同。罪魁祸首是LD_LIBRARY_PATHPATHPYTHONPATH ...

要检查的一件事是从运行事物的同一控制台运行Eclipse(因为它应该继承那些变量)。