在python中导入相同文件和函数名的文件

时间:2017-02-28 13:43:30

标签: python import

src
 |
  -- Country
     |
      -- test_file.py -> test_file(function)
  -- State
     |
      -- test_file.py -> i want to run this file

我必须在当前工作目录的State中运行test_file。我必须从国家的test_file导入函数test_file。

使用路径

import sys
sys.path.append('../Country')
from test_file import *

print test_file()

当我运行文件时。它说找不到role_name函数。 它无法找到该功能。 但是,如果我将Country中的文件名从test_file更改为其他名称,则其工作正常。 我认为这个问题与某种模棱两可有关。

我需要为这两个文件使用相同的名称。 这个问题还有另一种出路吗?

1 个答案:

答案 0 :(得分:4)

sys.path.append('../Country')替换为sys.path.insert(0, '../Country')

由于您在路径末尾附加了Country模块,因此当前工作目录(State)中的test_file.py优先。在路径的开头插入应该解决这个问题。 另外不要使用import *而是使用import role_path,这样如果找不到所需的对象,import指令将失败,而不是静默继续并让错误在以后触发。

但是如果Country是一个合适的模块(根据Python版本有__init__.py或者没有),以这种方式导入你的函数会更加清晰:

from ..Country.test_file import role_path