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

在python中导入相同文件和函数名的文件,python,import,Python,Import,我必须在当前工作目录的状态下运行test_文件。我必须从国家/地区的test_文件导入函数test_文件 使用路径 src | -- Country | -- test_file.py -> test_file(function) -- State | -- test_file.py -> i want to run this file 当我运行文件时。它表示未找到角色名称函数。 它无法找到该函数。 但是,如果我将国家/地区的文

我必须在当前工作目录的状态下运行test_文件。我必须从国家/地区的test_文件导入函数test_文件

使用路径

src
 |
  -- Country
     |
      -- test_file.py -> test_file(function)
  -- State
     |
      -- test_file.py -> i want to run this file
当我运行文件时。它表示未找到角色名称函数。 它无法找到该函数。 但是,如果我将国家/地区的文件名从test_file更改为其他名称,则工作正常。 我认为这个问题与某种含糊不清有关

我需要两个文件的名称相同。
这个问题还有其他解决方法吗?

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

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

但是,如果Country是一个合适的模块(使用
\uuu init\uuuu.py
或不依赖于Python版本),那么以这种方式导入函数会更简洁:


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

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

但是,如果Country是一个合适的模块(使用
\uuu init\uuuu.py
或不依赖于Python版本),那么以这种方式导入函数会更简洁:


.Country.test\u文件导入角色\u name
…?!尝试在非软件包中进行相对导入此问题的答案可能会有所帮助:答案中显示了importlib(python 3)/imp(python 2)的使用。
print dir()
,并检查导入的方法。from
.Country.test\u文件导入角色\u name
…?!尝试在非软件包中进行相对导入此问题的答案可能很有用:在答案中,它们显示了importlib(python 3)/imp(python 2)的使用。
print dir()
并检查导入的方法。这很有意义。我以前也遇到过类似的问题!sys.path.insert()来拯救我们!sys.path.insert()工作起来很有魅力。谢谢你,纪尧姆!这是有道理的。我以前也遇到过类似的问题!sys.path.insert()来拯救我们!sys.path.insert()工作起来很有魅力。谢谢你,纪尧姆!
import sys
sys.path.append('../Country')
from test_file import *

print test_file()
from ..Country.test_file import role_path