从外部包动态导入*从包

2024-04-19 23:23:09 发布

您现在位置:Python中文网/ 问答频道 /正文

通常情况下,我的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: 我尝试导入的包位于following结构:

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

我想用*从另一个包(pyhton/site packages/other\u pacakge/…)中的代码导入这个配置包。 据我所知,“from package import*”表示只加载init.py(如果没有定义all,实际上没有定义)。你知道吗


Tags: path代码pyimport机器configapp应用程序
1条回答
网友
1楼 · 发布于 2024-04-19 23:23:09

试试这个:

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版本,因此提供这些信息将有助于您获得帮助。你知道吗

相关问题 更多 >