下面是我的 init.py,位于 pkg/settings 下
import yaml
import os
def Keypairs():
print os.path.dirname(os.path.realpath(__file__))
with open('keypairs.yaml') as f:
return yaml.load(f)
我运行包:python -m pkg.test.first
它有一个相对导入:
from ..settings import Keypairs
print Keypairs()
但我明白了
IOError: [Errno 2] No such file or directory: 'keypairs.yaml'
虽然结构是:
pkg/
__init__.py
settings/
__init__.py
keypairs.yaml
test/
__init__.py
first.py
我在搞乱目录什么?
如果我将 __init__.py
(位于设置中)作为脚本运行,它会找到该文件。
最佳答案
看来,由于我将文件作为包运行,因此它将包所在的目录作为父目录。
所以你需要通过
basepath = os.path.dirname(__file__)
keypairs = os.path.abspath(os.path.join(basepath, "keypairs.yaml"))
with open(keypairs,'r') as f:
return yaml.load(f)
或者如果你想要绝对的:
with open("pkg/settings/keypairs.yaml",'r') as f:
在@yorodm的帮助下最干净的方式
with open(os.path.join(os.path.dirname(__file__),'keypairs.yaml')) as f:
return yaml.load(f)
关于python - IO错误: [Errno 2] No such file or directory/in package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23090151/