Python: "ImportError: DLL load failed: The specified module could not be found." Problems when importing ffn (finance library for python)
Python: "ImportError: DLL load failed: The specified module could not be found." Problems when importing ffn (finance library for python)
抱歉,如果确实存在一个线程已经解决了这个问题(我花了几个小时专心搜索多个站点和 GitHubs 以寻找似乎导致问题的依赖项),但是每个解决方案似乎相当特定于某某试图使用的特定库。
我一直在搞定量金融/算法交易,并一直在尝试导入特定的库 ffn
,但是,根据问题标题,我收到了一条有点冗长的错误消息,详细说明ImportError
,以及我应该如何缺少某些似乎存在的非常具体的依赖项。老实说,这可能只是一个 dependency-ception(我缺少 ffn
的依赖项的依赖项),但我已尽力排除这种可能性。
这是完整的错误:
ImportError Traceback (most recent call last)
<ipython-input-2-01bc82d8cf41> in <module>()
2 import numpy as np
3 import pandas as pd
----> 4 import ffn
5 import math
~\PycharmProjects\buff\venv\lib\site-packages\ffn\__init__.py in <module>()
----> 1 from . import core
2 from . import data
3
4 from .data import get
5 #from .core import year_frac, PerformanceStats, GroupStats, merge
~\PycharmProjects\buff\venv\lib\site-packages\ffn\core.py in <module>()
8 from pandas.core.base import PandasObject
9 from tabulate import tabulate
---> 10 import sklearn.manifold
11 import sklearn.cluster
12 import sklearn.covariance
~\PycharmProjects\buff\venv\lib\site-packages\sklearn\__init__.py in <module>()
132 else:
133 from . import __check_build
--> 134 from .base import clone
135 __check_build # avoid flakes unused variable error
136
~\PycharmProjects\buff\venv\lib\site-packages\sklearn\base.py in <module>()
11 from scipy import sparse
12 from .externals import six
---> 13 from .utils.fixes import signature
14 from . import __version__
15
~\PycharmProjects\buff\venv\lib\site-packages\sklearn\utils\__init__.py in <module>()
9
10 from .murmurhash import murmurhash3_32
---> 11 from .validation import (as_float_array,
12 assert_all_finite,
13 check_random_state, column_or_1d, check_array,
~\PycharmProjects\buff\venv\lib\site-packages\sklearn\utils\validation.py in <module>()
16
17 from ..externals import six
---> 18 from ..utils.fixes import signature
19 from .. import get_config as _get_config
20 from ..exceptions import NonBLASDotWarning
~\PycharmProjects\buff\venv\lib\site-packages\sklearn\utils\fixes.py in <module>()
142 from ._scipy_sparse_lsqr_backport import lsqr as sparse_lsqr
143 else:
--> 144 from scipy.sparse.linalg import lsqr as sparse_lsqr # noqa
145
146
~\PycharmProjects\buff\venv\lib\site-packages\scipy\sparse\linalg\__init__.py in <module>()
112 from __future__ import division, print_function, absolute_import
113
--> 114 from .isolve import *
115 from .dsolve import *
116 from .interface import *
~\PycharmProjects\buff\venv\lib\site-packages\scipy\sparse\linalg\isolve\__init__.py in <module>()
4
5 #from info import __doc__
----> 6 from .iterative import *
7 from .minres import minres
8 from .lgmres import lgmres
~\PycharmProjects\buff\venv\lib\site-packages\scipy\sparse\linalg\isolve\iterative.py in <module>()
8 import numpy as np
9
---> 10 from . import _iterative
11
12 from scipy.sparse.linalg.interface import LinearOperator
ImportError: DLL load failed: The specified module could not be found.
此特定消息来自失败的 Jupyter notebook 试用版(IPython 控制台),尽管我已通过 "normal" Python 尝试 运行 相同的代码 3文件,只是为了得到相同的消息。正如我之前推断的那样,我已经下载/正确安装了消息中提到的所有依赖项(sklearn
和 scipy
是 ffn
本身之外的唯一问题 children错误提示)。最让我困惑的是,ffn
引用中的依赖项/中的这些 import 语句的所有内容都是它们应该在的地方并且(据我所知)是可访问的。
也许我应该对此进行更彻底的研究,但对我来说唯一真正有意义的是我的这些库版本错误(在大多数情况下,它们维护良好并且经常更新) 并且 ffn
及其依赖项所需的某些功能已弃用且不再存在。然而,当我花了 30 秒来弄清楚 sklearn.manifold
是否存在时,这个理论被(至少部分地)证明是错误的,令我惊讶的是,它确实存在。我还检查了我的 IDE 的库管理器/解释器设置菜单,一切都是最新的(我正在使用 PyCharm CE)。
简而言之:当我似乎拥有它正在搜索的所有内容时为什么我会收到此消息/这到底是什么意思,我该如何解决这个问题以便我可以使用我想使用的库?
如果这有帮助,这里是一个总结:
所有库/依赖项都是最新的(PyCharm 维护每个库/依赖项当前的版本,尽管我必须手动进入以告诉它执行更新)。
同样,我正在使用 PyCharm CE 2018(最新版本)。
这是 Jupyter notebook 中产生错误的整个单元格(也恰好是 notebook 中的所有内容):
from pylab import *
import numpy as np
import pandas as pd
import ffn
import math
以下是 Python 文档中产生相同错误的所有内容(实际上是相同的代码):
import ffn
import math
import pandas as pd, numpy as np
import datetime
data1 = ffn.get('agg, hyg, spy, eem, efa', start='2018-01-01', end='2018-02-02')
print(data1.head())
我是运行Windows10 64位
您的代码无法找到您的模块。在 Jupyter Notebook 中,您可以做到这一点。 'PYTHONPATH'
是在 python 中定位自定义模块的环境变量。现在您的模块位于您的项目目录中,因此您需要确保您的解释器可以找到您的文件。
基本上,您需要在 Jupyter Notebook 中设置路径以定位导入的用户定义模块。
"To set an env
variable in a jupyter notebook, just use a "%" 魔术命令,%env
或 %set_env
,例如 %env MY_VAR=MY_VALUE
或 %env MY_VAR MY_VALUE
。(使用 %env
本身打印出当前的环境变量。)"
参见:
抱歉,如果确实存在一个线程已经解决了这个问题(我花了几个小时专心搜索多个站点和 GitHubs 以寻找似乎导致问题的依赖项),但是每个解决方案似乎相当特定于某某试图使用的特定库。
我一直在搞定量金融/算法交易,并一直在尝试导入特定的库 ffn
,但是,根据问题标题,我收到了一条有点冗长的错误消息,详细说明ImportError
,以及我应该如何缺少某些似乎存在的非常具体的依赖项。老实说,这可能只是一个 dependency-ception(我缺少 ffn
的依赖项的依赖项),但我已尽力排除这种可能性。
这是完整的错误:
ImportError Traceback (most recent call last)
<ipython-input-2-01bc82d8cf41> in <module>()
2 import numpy as np
3 import pandas as pd
----> 4 import ffn
5 import math
~\PycharmProjects\buff\venv\lib\site-packages\ffn\__init__.py in <module>()
----> 1 from . import core
2 from . import data
3
4 from .data import get
5 #from .core import year_frac, PerformanceStats, GroupStats, merge
~\PycharmProjects\buff\venv\lib\site-packages\ffn\core.py in <module>()
8 from pandas.core.base import PandasObject
9 from tabulate import tabulate
---> 10 import sklearn.manifold
11 import sklearn.cluster
12 import sklearn.covariance
~\PycharmProjects\buff\venv\lib\site-packages\sklearn\__init__.py in <module>()
132 else:
133 from . import __check_build
--> 134 from .base import clone
135 __check_build # avoid flakes unused variable error
136
~\PycharmProjects\buff\venv\lib\site-packages\sklearn\base.py in <module>()
11 from scipy import sparse
12 from .externals import six
---> 13 from .utils.fixes import signature
14 from . import __version__
15
~\PycharmProjects\buff\venv\lib\site-packages\sklearn\utils\__init__.py in <module>()
9
10 from .murmurhash import murmurhash3_32
---> 11 from .validation import (as_float_array,
12 assert_all_finite,
13 check_random_state, column_or_1d, check_array,
~\PycharmProjects\buff\venv\lib\site-packages\sklearn\utils\validation.py in <module>()
16
17 from ..externals import six
---> 18 from ..utils.fixes import signature
19 from .. import get_config as _get_config
20 from ..exceptions import NonBLASDotWarning
~\PycharmProjects\buff\venv\lib\site-packages\sklearn\utils\fixes.py in <module>()
142 from ._scipy_sparse_lsqr_backport import lsqr as sparse_lsqr
143 else:
--> 144 from scipy.sparse.linalg import lsqr as sparse_lsqr # noqa
145
146
~\PycharmProjects\buff\venv\lib\site-packages\scipy\sparse\linalg\__init__.py in <module>()
112 from __future__ import division, print_function, absolute_import
113
--> 114 from .isolve import *
115 from .dsolve import *
116 from .interface import *
~\PycharmProjects\buff\venv\lib\site-packages\scipy\sparse\linalg\isolve\__init__.py in <module>()
4
5 #from info import __doc__
----> 6 from .iterative import *
7 from .minres import minres
8 from .lgmres import lgmres
~\PycharmProjects\buff\venv\lib\site-packages\scipy\sparse\linalg\isolve\iterative.py in <module>()
8 import numpy as np
9
---> 10 from . import _iterative
11
12 from scipy.sparse.linalg.interface import LinearOperator
ImportError: DLL load failed: The specified module could not be found.
此特定消息来自失败的 Jupyter notebook 试用版(IPython 控制台),尽管我已通过 "normal" Python 尝试 运行 相同的代码 3文件,只是为了得到相同的消息。正如我之前推断的那样,我已经下载/正确安装了消息中提到的所有依赖项(sklearn
和 scipy
是 ffn
本身之外的唯一问题 children错误提示)。最让我困惑的是,ffn
引用中的依赖项/中的这些 import 语句的所有内容都是它们应该在的地方并且(据我所知)是可访问的。
也许我应该对此进行更彻底的研究,但对我来说唯一真正有意义的是我的这些库版本错误(在大多数情况下,它们维护良好并且经常更新) 并且 ffn
及其依赖项所需的某些功能已弃用且不再存在。然而,当我花了 30 秒来弄清楚 sklearn.manifold
是否存在时,这个理论被(至少部分地)证明是错误的,令我惊讶的是,它确实存在。我还检查了我的 IDE 的库管理器/解释器设置菜单,一切都是最新的(我正在使用 PyCharm CE)。
简而言之:当我似乎拥有它正在搜索的所有内容时为什么我会收到此消息/这到底是什么意思,我该如何解决这个问题以便我可以使用我想使用的库?
如果这有帮助,这里是一个总结:
所有库/依赖项都是最新的(PyCharm 维护每个库/依赖项当前的版本,尽管我必须手动进入以告诉它执行更新)。
同样,我正在使用 PyCharm CE 2018(最新版本)。
这是 Jupyter notebook 中产生错误的整个单元格(也恰好是 notebook 中的所有内容):
from pylab import *
import numpy as np
import pandas as pd
import ffn
import math
以下是 Python 文档中产生相同错误的所有内容(实际上是相同的代码):
import ffn
import math
import pandas as pd, numpy as np
import datetime
data1 = ffn.get('agg, hyg, spy, eem, efa', start='2018-01-01', end='2018-02-02')
print(data1.head())
我是运行Windows10 64位
您的代码无法找到您的模块。在 Jupyter Notebook 中,您可以做到这一点。 'PYTHONPATH'
是在 python 中定位自定义模块的环境变量。现在您的模块位于您的项目目录中,因此您需要确保您的解释器可以找到您的文件。
基本上,您需要在 Jupyter Notebook 中设置路径以定位导入的用户定义模块。
"To set an env
variable in a jupyter notebook, just use a "%" 魔术命令,%env
或 %set_env
,例如 %env MY_VAR=MY_VALUE
或 %env MY_VAR MY_VALUE
。(使用 %env
本身打印出当前的环境变量。)"
参见: