Python3.6 error: ModuleNotFoundError: No module named 'src'

Python3.6 error: ModuleNotFoundError: No module named 'src'

我知道以前有人问过类似的问题...但我很快就怀疑... 我一直在关注这个 link:https://www.python-course.eu/python3_packages.php

我的代码结构:

my-project
  -- __init__.py
  -- src
      -- __init__.py
      -- file1.py
  -- test
      -- __init__.py
      -- test_file1.py

test_file1.py:

import unittest
from src.file1 import *

class TestWriteDataBRToOS(unittest.TestCase):
    def test_getData(self):
    sampleData = classInFile1()
    sampleData.getData()
    self.assertNotEqual(sampleData.usrname, "")

if __name__ == '__main__':
    unittest.main()

这里我得到错误:

ModuleNotFoundError: No module named 'src'

如果我改成:

import sys
sys.path.insert(0, '../src')
import unittest
from file1 import *

那么就可以了!

谁能帮我理解为什么它不会像上面粘贴的 link 中描述的那样工作,或者用任何其他方式代替写 sys.path.insert(0, '../src') 语句。

谢谢!

编辑:

从我的项目目录执行后:python -m unittest test/test_file1/TestWriteDataBRToOS我收到如下更新的错误。

Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/lib/python2.7/unittest/__main__.py", line 12, in <module>
main(module=None)
File "/usr/lib/python2.7/unittest/main.py", line 94, in __init__
self.parseArgs(argv)
File "/usr/lib/python2.7/unittest/main.py", line 149, in parseArgs
self.createTests()
File "/usr/lib/python2.7/unittest/main.py", line 158, in createTests
self.module)
File "/usr/lib/python2.7/unittest/loader.py", line 130, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib/python2.7/unittest/loader.py", line 91, in loadTestsFromName
module = __import__('.'.join(parts_copy))
ImportError: Import by filename is not supported.

这是因为它无法找到名为 'src' 的模块,可能是因为未正确指定 'src' 文件夹的路径。如果您直接写入 src.file1,那么您的 'src' 文件应该出现在当前 python 文件 (test_file1.py) 所在的同一目录中。如果它不在同一目录中,则必须指定整个目录。 sys.path.insert(0, '../src') 起作用的原因是 .. 会将您向上移动一个目录,这就是您的 src 文件夹所在的位置。如果您 test_file1.py 的工作目录是 /usr/bin/python 那么您的 src 文件夹的位置将是 /usr/bin/src 并且因为它与您当前的工作目录不同,所以 python 文件无法找到 'src' 模块。

您必须 运行 从 my-project 文件夹而不是 test 文件夹进行测试。

python -m unittest test.test_file1.TestWriteDataBRToOS

你也可以这样做:

export PYTHONPATH="${PYTHONPATH}:/path/to/your/project/"

或 Windows:

set PYTHONPATH="${PYTHONPATH}:/path/to/your/project/"

this is my folder structure

当我试图在训练 .py 中提取 common.py 文件中的乐趣时 我收到错误提示 src module error 代码是:from src.utils.common import read_config 然后我尝试了这个:from utils.common import read_config 成功了