修改sys.path但仍无法找到模块

时间:2016-11-07 23:19:54

标签: python python-2.7

我正在使用API​​,它具有以下代码:

# aardvark_py.py
import os
import sys
try:
    import aardvark as api
except ImportError, ex1:
    import imp, platform
    ext = platform.system() in ('Windows', 'Microsoft') and '.dll' or '.so'
    try:
        api = imp.load_dynamic('aardvark', 'aardvark' + ext)
    except ImportError, ex2:
        import_err_msg  = 'Error importing aardvark%s\n' % ext
        import_err_msg += '  Architecture of aardvark%s may be wrong\n' % ext
        import_err_msg += '%s\n%s' % (ex1, ex2)
        raise ImportError(import_err_msg)

毋庸置疑,我无法修改此代码。

我的问题在于这行代码:

api = imp.load_dynamic('aardvark', 'aardvark' + ext)

第二个参数设置.dll的路径,即设置为aarvark.dll,它位于aardvark_py.py所在的同一位置。我将此模块aardvark_py导入到我的代码中。我的代码与aardvark_py.pyaardvark.dll的位置不同。但是,当我进行导入时,它失败了。它提出了一个例外。看起来它不知道.dll的位置,但我无法弄清楚原因。这是我得到的错误

"path\to\aardvark_py.py", line 71, in <module>
    raise ImportError(import_err_msg)
ImportError: Error importing aardvark.dll
  Architecture of aardvark.dll may be wrong
No module named aardvark
DLL load failed: The specified module could not be found.

这是近似目录布局:

project_dir -
     |
     |- 3rdparty
     |    |
     |    |-aardvark
     |         |
     |         |-aarvark_py.py
     |         |-aardvark.dll     
     |
     |
     |-tools
         |
         |-mycode.py

mycode.py确实包含修改sys.path

的代码
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__))), '..', '3rdparty', 'aardvark')

1 个答案:

答案 0 :(得分:0)

我在32位python 2.7中遇到了同样的问题。我安装了64位python 2.7,现在它可以工作。