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更改为其他名称,则其工作正常。 我认为这个问题与某种模棱两可有关。
我需要为这两个文件使用相同的名称。 这个问题还有另一种出路吗?
答案 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