我有以下目录:
|-- project
| |-- __init__.py
| |-- proj1
| | |-- file.py
| | |-- file.py~
| | `-- __init__.py
| `-- proj2
| |-- call.py
| |-- call.py~
| `-- __init__.py
call.py有:
from proj1.file import hello
hello('nishant')
file.py有。
def hello(arg):
print 'hello ,' + arg
当我试图在项目目录之外调用时
python project/proj2/call.py
我得到导入错误:没有名为proj1.file的模块
任何想法......?
答案 0 :(得分:0)
这是因为导入是相对于PATH环境变量中的路径(或python中的sys.path
)。默认情况下,此var仅包含当前目录,即您运行的目录。
从project
目录中运行您的项目:python proj2/call.py
或者,您可以在执行导入之前将项目根目录附加到sys.path
:
import sys
sys.path.append(YOUR_PROJECT_ROOT)
答案 1 :(得分:0)
请注意,call.py
和file.py
不在同一路径中,因此您需要将prog1
添加到call.py
的路径..
:
import sys ,os
path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
if not path in sys.path:
sys.path.insert(1, path)
del path