【问题标题】:Importing modules in Python that use local paths在 Python 中导入使用本地路径的模块
【发布时间】:2020-10-22 15:06:22
【问题描述】:

我有一个使用相对路径的模块的问题,这个问题很容易解释:

这是我的架构:

myProject/
├───main.py
│
├───modules/
│   ├───__init__.py
│   ├───files/
│   │    some_text.txt
│   └───module.py

some_text.txt 包含一些不相关的文本。

module.py 包含:

def read_file():
    with open("files/some_text.txt","r") as f:
        print(f.read())

ma​​in.py 包含:

from modules import module

module.read_file()

当我运行 ma​​in.py 时,你显然可以预料到我会得到这个错误:

FileNotFoundError: [Errno 2] No such file or directory: 'files/some_text.txt'

解决方案当然是将 module.py 中的路径更改为“modules/files/some_text.txt”,但我真的不喜欢这个解决方案,因为如果我直接调用module.py,它不直观并且不起作用。另外,如果我从另一个项目调用 myProject,它仍然会失败,因为我必须再次将路径更改为“myProject/modules/files/some_text.txt”。

正确解决此问题的良好做法是什么?

【问题讨论】:

    标签: python path python-import


    【解决方案1】:

    您可以使用__file__ 变量(保存当前脚本的路径)作为根并基于它构建您的路径。

    你的情况

    "files/some_text.txt"
    # can become
    os.path.join(os.path.dirname(__file__), 'files', 'some_text.txt')
    

    【讨论】:

      猜你喜欢
      • 2012-04-27
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      相关资源
      最近更新 更多