从不同目录中的程序运行的函数再也找不到它的fi

2024-04-25 18:01:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python3.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秒,然后崩溃了,抱怨它找不到它的pickle文件,它位于/projecttext_algorithms.py运行或从/projecttext_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'

有人知道怎么解决这个问题吗?-如何确保它不会根据调用文件的位置而更改查找该文件的位置。有没有合适的方法来处理这种情况?你知道吗

无论从何处运行,它都应该找到它的文件。你知道吗


Tags: 文件path项目textpy功能目录project
1条回答
网友
1楼 · 发布于 2024-04-25 18:01:47

您应该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'
)

相关问题 更多 >