我有以下目录结构:
├── __init__.py
├── http
│ ├── __init__.py
│ ├── web.py
└── test
├── __init__.py
├── app.py
在app.py文件中:
from http import web
当我尝试运行时(在根目录中):
python test/app.py
我收到以下错误:
ImportError: no module named http
我知道我可以使用:
python -m test.app
然而,还有另外一种方法吗?
答案 0 :(得分:1)
当您运行python path/to/script.py
时,python会将包含script.py
的目录添加到模块搜索路径,但不会神奇地添加任何其他内容。因此,当您运行python test/app.py
并且app.py
尝试import http
时,找不到它,因为http
模块不在搜索路径中的任何位置。解决这个问题的简单方法是:
PYTHONPATH=$PWD python test/app.py
这会将您当前的目录添加到模块搜索路径中。假设您当前的目录是包含http
模块的目录,这将允许app.py
成功导入http
。