我有一个具有以下目录结构的 Python 应用程序:
/home/vagrant/app
/home/vagrant/app/support
/home/vagrant/app/utils (1)
/home/vagrant/app/examples/example_a
/home/vagrant/app/examples/utils (2)
我已将 /home/vagrant/app 添加到我的 PYTHONPATH 并且所有文件夹都有__init__.py
文件。
我尝试通过调用来运行应用程序/home/vagrant/app$ python ./example/example_a/ex_a.py
它以回溯退出:
File "./examples/example_a/ex_a.py", line 14, in <module> (3)
from support.sp1.py import *
File "/home/vagrant/app/support/sp1.py", line 11, in <module> (4)
from utils.mod_a import *
ImportError: No module named mod_a
名为 mod_a.py 的模块存在于~/app/utils
但不存在于~/app/examples/utils
.
我试图重命名~/app/examples/utils
为~/app/examples/utils-ex
. 这解决了这个问题,但其他依赖 '/home/vagrant/app/examples/utils' 的东西被破坏了。
有没有办法让 python 解释器寻找 utils (1) 而不是 utils (2)?文件 (3) 具有相对路径(以点为前缀),文件 (4) 具有绝对路径(以 / 为前缀)。我的想法是我的设置有问题,这使得解释器在 app/.xml 之前查看 app/examples 文件夹。我的启动路径在 app/examples/example_a 路径中,但 sp1.py 不在。
当然,没有 utils 和 examples/utils 是最简单的,但这不是我的代码,我不愿意重写它。