我有以下目录结构:从父目录导入文件?
application
tests
main.py
main.py
应用/ main.py包含了一些功能。
tests/main.py将包含我对这些函数的测试,但我无法导入顶层main.py。我得到以下错误:
ImportError: Import by filename is not supported.
我尝试使用下面的语法来导入:
import main
我在做什么错?
我有以下目录结构:从父目录导入文件?
application
tests
main.py
main.py
应用/ main.py包含了一些功能。
tests/main.py将包含我对这些函数的测试,但我无法导入顶层main.py。我得到以下错误:
ImportError: Import by filename is not supported.
我尝试使用下面的语法来导入:
import main
我在做什么错?
您必须在应用程序目录添加到您的路径:
import sys
sys.path.append("/path/to/dir")
from app import object
或者从外壳:
setenv PATH $PATH:"path/to/dir"
如果您使用Windows: 添加变量在windows路径。
或者在命令行:
set PATH=%PATH%;C:\path\to\dir
所有你需要让你的目录到包,加入__init__.py
文件首先:
application
tests
__init__.py
main.py
__init__.py
main.py
那么你应该确保上述应用程序的目录在sys.path
。有很多方法可以做到这一点,如提出申请infto包并安装它,或者只是在正确的文件夹等执行的东西
添加'__init__。你可以将你的目录变成包而不是模块。 – raben
如果你想你的脚本更便携,考虑自动找到父目录:
import os, sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# import ../db.py
import db
in python。存在相同的目录,。对于父目录 来导入您可以使用父目录中的文件..
from .. import filename (without .py extension)
这对我不起作用,'ValueError:试图在非包中进行相对导入 – nobism
我第一次阅读文档:http://docs.python.org/2/tutorial /modules.html#packages – Blender
那么你不能导入你正在处理的文件名。 – squiguy
你在做哪个文件'import main'? – Aivar