从父目录导入文件?

2024-04-19 23:28:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下目录结构:

application
    tests
        main.py
    main.py

application/main.py包含一些函数。

tests/main.py将包含我对这些函数的测试,但我无法导入顶级的main.py。我得到以下错误:

ImportError: Import by filename is not supported.

我正在尝试使用以下语法导入:

import main

我做错什么了?


Tags: 函数pyimport目录byapplicationismain
3条回答

如果希望脚本更易于移植,请考虑自动查找父目录:

import os, sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# import ../db.py
import db

必须将应用程序目录添加到您的路径:

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上。有很多方法可以做到这一点,比如让应用程序进入一个包并安装它,或者只是在正确的文件夹中执行一些事情等等

Then your imports will work.

相关问题 更多 >