我有一个简单的问题。 我有一个python模块" dev1.py"需要一个文件" dev1_blob"
如果我在一个目录中拥有所有内容。 my_app像
一样加载dev1from dev1 import func1
它工作正常。 我想将dev1.py移动到目录" ./ dev_files"其中包含 init .py。我可以将dev1.py加载为
from dev_files.dev1 import func1
然而,当func1运行以访问" device_blob" - 它barfs as:
resource not found ..
这是基本的,我相信我错过了一些东西。
我无法弄清楚为什么python的伟大思想希望所有内容都引用__file__
(cwd)并迫使我根据它的运行位置来修改dev1.py。即在dev1.py中将文件称为:'dev_files/device_blob'
我可以通过这种方式工作,但这是编写代码的纯粹荒谬方式。 有没有一种简单的方法可以访问模块文件旁边的文件或下面的树?
答案 0 :(得分:1)
相对路径是Python的一个更大的缺陷。
对于此用例,您可以先调用open('../dev_files/device_blob')
返回目录。
我的一般解决方案是拥有一个" project.py"包含项目目录的绝对路径的文件。然后我拨打open(os.path.join(PROJECT_DIR, 'dev_files', 'device_blob'))
。