在python中导入相同文件和函数名的文件
我必须在当前工作目录的状态下运行test_文件。我必须从国家/地区的test_文件导入函数test_文件 使用路径在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 当我运行文件时。它表示未找到角色名称函数。 它无法找到该函数。 但是,如果我将国家/地区的文
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