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

从与Python中的可执行文件同名的模块导入,python,import,Python,Import,我有一个可执行文件,名为,例如,resource.py。它被放置在名为resource的文件夹中。重命名文件或文件夹是不可取的-这是旧产品,用户习惯于使用这种命名。在旧版本中,它在另一个项目下,所以导入到它听起来像是导入主产品。资源。 现在我需要使用导入,比如导入资源。和导入('resource'),…)。然后我尝试了一下,得到了一个预期的错误,因为Python首先尝试从文件resource.py导入 建议解决办法: 从sys.path中删除当前文件夹的路径: 我们需要在文件的开头有一段难看的

我有一个可执行文件,名为,例如,
resource.py
。它被放置在名为
resource
的文件夹中。重命名文件或文件夹是不可取的-这是旧产品,用户习惯于使用这种命名。在旧版本中,它在另一个项目下,所以导入到它听起来像是导入主产品。资源。

现在我需要使用导入,比如
导入资源。
导入('resource'),…)
。然后我尝试了一下,得到了一个预期的错误,因为Python首先尝试从文件
resource.py
导入

建议解决办法:

  • sys.path
    中删除当前文件夹的路径:
    • 我们需要在文件的开头有一段难看的代码
    • 此文件夹中没有可用的相对导入
  • 将文件夹路径放在列表的末尾
    sys.path
    • 在文件的开头有一大块难看的代码
    • 我不确定这个功能是否总是完美的工作
  • 你对此有什么想法吗

    p.S.Python v2.6,FreeBSD 7.3

    使用
    imp.find_模块()
    imp.load_模块()

    查找模块
    允许您指定自己的搜索路径

    使用
    导入查找模块()
    导入加载模块()


    find_module
    允许您指定自己的搜索路径

    您的问题不清楚哪些名称需要保持不变,以及为什么不能重命名模块但保持可执行文件不变。您是否考虑过使用“import XXX as resource”,或者尝试将模块重构成一个包?重命名模块比使用这两个“解决方案”要好得多。您的问题不清楚什么名称需要保持不变,以及为什么不能重命名模块,但保持可执行文件不变。您是否考虑过使用“import XXX as resource”,或者尝试将模块重构成一个包?重命名模块比混淆这两个“解决方案”要好得多