问题描述
我的程序结构是这样的:
-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