在Python中从与可执行文件同名的模块导入

1 投票
1 回答
622 浏览
提问于 2025-04-16 02:12

我有一个可执行的文件,叫做,比如说,resource.py。这个文件放在一个叫做resource的文件夹里。因为这是一个老产品,用户已经习惯了这个命名,所以我不想改文件名或文件夹名。在旧版本中,它是在另一个项目下,所以导入的时候用的是import main_product.resource.<..>

现在我需要用import resource.<..>__import__('resource.<..>', ...)来导入。但是当我尝试这样做时,我得到了一个预期的错误,因为Python会优先从resource.py这个文件中导入。

这里有一些建议的解决方案:

  1. sys.path中移除当前文件夹的路径:
    • 这需要在文件开头加一段很丑的代码;
    • 在这个文件夹里就不能使用相对导入了;
  2. 把文件夹路径放在sys.path列表的最后:
    • 这需要在文件开头加一段更大的丑陋代码;
    • 我不确定这个方法是否总是能完美工作。

有没有什么可用的主意呢?

附注:Python v2.6,FreeBSD 7.3

1 个回答

1

使用 imp.find_module()imp.load_module()

find_module 让你可以指定自己的路径来进行搜索。

撰写回答