这是我第一次真正坐下来尝试python 3,而且似乎失败得很惨。我有以下两个文件:

test.py config.py

py中定义了一些函数和一些变量。我将其归纳为以下几点:

config.py

debug = True

test.py

import config
print (config.debug)

我还有一个__init__.py

然而,我得到以下错误:

ModuleNotFoundError: No module named 'config'

我知道py3约定使用绝对导入:

from . import config

然而,这会导致以下错误:

ImportError: cannot import name 'config'

所以我不知道该怎么做……任何帮助都非常感激。:)


当前回答

我在一台Linux机器上工作。当我运行python my_module/__main__.py时,我也遇到了同样的问题。

如果运行export PYTHONPATH=命令,错误就会修复。在运行脚本之前。

export PYTHONPATH=.
python my_module/__main__.py

其他回答

正如在原帖子的评论中所述,这似乎是我使用的python解释器的问题,而不是python脚本的问题。我从WinPython包切换到python.org的官方python 3.6,它工作得很好。谢谢大家的帮助:)

您可以简单地将以下文件添加到测试目录,然后python将在测试之前运行它

__init__.py file

import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

声明正确的sys。调用模块前的路径列表:

import os, sys

#'/home/user/example/parent/child'
current_path = os.path.abspath('.')

#'/home/user/example/parent'
parent_path = os.path.dirname(current_path)

sys.path.append(parent_path)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'child.settings')

在项目根目录中设置PYTHONPATH环境变量。

考虑类unix:

export PYTHONPATH=.

对我来说,简单地添加当前目录就可以了。

使用以下结构:

└── myproject
    ├── a.py
    └── b.py

a.py:

from b import some_object
# returns ModuleNotFound error

from myproject.b import some_object
# works