我正在使用Python 3.6.0,并且在跨多个目录的项目中遇到问题。目录结构如下所示:
/project
/project/frontend
我的前端的所有功能都在本地完成并进行了测试,并且生活在/project/frontend
中,现在我想将它与我的后端连接,后端位于/project
所以我改为/project/frontend
并运行display_page.py
,其中包含以下行:
sys.path.append('../')
from text_algorithms import process_text
.. text_algorithms.py
位于/project
,从那里开始运行正常。所以它开始运行了30秒然后崩溃,抱怨它无法找到位于/project
的pickle文件从text_algorithms.py
运行/project
时从来没有问题} text_algorithms.py
包含以下行:
with open('english_vocab.pickle', 'rb') as f:
v = pickle.load(f)
所以我认为我可以通过从下面的目录运行python frontend/display_page.py
来“愚弄”它,但这会产生不同的错误,即
ModuleNotFoundError: No module named 'text_algorithms'
有谁知道如何解决这个问题? - 如何确保它不会在找到该文件的位置发生变化,具体取决于您调用它的位置。有没有正确的方法来处理这种情况?
它应该在任何地方找到它的文件。
答案 0 :(得分:1)
您应该import
项目的其他模块:
from frontend.text_algorithms import process_text
如果在text_algorithms
中您要访问相对于此模块的文件,则应使用包含特定模块的文件路径的__file__
值。使用os.path
,您可以获取目录并将其与数据文件路径连接。
例如:
file_path = os.path.join(
os.path.split(__file__)[0],
'some.file'
)