从外部包中动态导入*

时间:2015-03-16 15:31:23

标签: python windows python-import

通常,我的python应用程序没有任何问题。 但是当我在Windows机器上运行它或尝试使用pycharm使用远程Python解释器从Windows机器开始调试会话时(不知道这个事实是否重要),在这些行的一些软件包中:

config_path = os.path.join(app_dir, 'config')
config_module = __import__(config_path, fromlist=['*'])

我收到错误(仅限Windows):

ImportError: Import by filename is not supported.

好的,然后我将此代码更改为:

config_module = imp.load_source('config', app_dir)

我得到一个空的config_module模块。

那么,什么工作等同于__import__(config_path, fromlist=['*'])

Python 2.7.9

编辑1: 我试图导入的包是在fololowing结构:

<app root>
   config
      __init__.py
      file1.py
      file2.py

我想从另一个包中的代码(pyhton / site-packages / other_pacakge / ...中的某个地方)导入带有*的配置包。 据我了解,“从包导入*”意味着只需加载 init .py(如果没有定义所有,实际上没有)。

1 个答案:

答案 0 :(得分:0)

试试这个:

path = os.path.abspath(path)
namespace = "config_module"
print('Importing:',path,'@',namespace)
loader = importlib.machinery.SourceFileLoader(namespace, path+'.py')
handle = loader.load_module(namespace)
print(handle)

这些类型的导入在很大程度上取决于您正在运行的Python版本,因此提供这些信息将有助于帮助您。

相关问题