python无法找到证书文件路径

问题描述

我的程序结构是这样的:

    -worker
         -worker
              --lib
                  ----file.py
                  ----cert.pem
         -app.py

在 file.py 中,我有以下代码:

import os

BASE_DIR = os.path.dirname(__file__)
filepath = os.path.join(BASE_DIR,'cert.pem')

当我通过 app.py 运行服务时,它在 file.py 行 L2 处失败,说明:

OSError: Could not find a suitable TLS CA certificate bundle,invalid path: /usr/local/lib/python3.7/dist-packages/worker/lib/../lib/cert.pem

有人知道为什么python要两次获取“lib”目录并在其间放置“..”吗?

解决方法

pathlib 通常最好处理路径。

import pathlib

BASE_DIR = pathlib.Path(__file__).parent.absolute()
filepath = BASE_DIR / "cert.pem"

print(filepath)
# >>> /Users/felipe/Desktop/example_project/cert.pem

注意 example.py(上面)也在 example_project 文件夹中。

,

@Selcuk 发布的 AS:这对我有用。:

     BASE_DIR = os.path.realpath(os.path.dirname(__file__)) – Selcuk 

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...