Python3.6错误:ModuleNotFoundError:没有名为“ src”的模块

use*_*051 6 python-unittest python-3.6

我知道之前曾问过类似的问题...但是我有一个很快的疑问...我一直在关注此链接:https : //www.python-course.eu/python3_packages.php

我的代码结构:

my-project
  -- __init__.py
  -- src
      -- __init__.py
      -- file1.py
  -- test
      -- __init__.py
      -- test_file1.py
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

在这里我得到错误:

ModuleNotFoundError: No module named 'src'
Run Code Online (Sandbox Code Playgroud)

如果我更改为:

import sys
sys.path.insert(0, '../src')
import unittest
from file1 import *
Run Code Online (Sandbox Code Playgroud)

然后就可以了!

有人可以帮我理解为什么它不起作用,就像上面粘贴的链接中所描述的那样,或者以其他替代方式代替了编写sys.path.insert(0, '../src')语句。

谢谢!

编辑:

从my-project目录执行后: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.
Run Code Online (Sandbox Code Playgroud)

小智 24

你也可以这样做:

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

或在 Windows 中:

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


blh*_*ing 13

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

python -m unittest test.test_file1.TestWriteDataBRToOS
Run Code Online (Sandbox Code Playgroud)


Jal*_*rak 11

消除此错误的最佳方法:

1- 创建 .env 文件并在该文件中添加以下行:

export PYTHONPATH="$PYTHONPATH:$PWD"
Run Code Online (Sandbox Code Playgroud)

保存文件并退出。

2- 在代码的当前目录中打开终端并运行:

set -a
source  .env
Run Code Online (Sandbox Code Playgroud)


San*_*nde 6

这是因为它无法找到名为“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”模块。

  • 是的,我明白......但只有当我通过Ubuntu VM上的终端运行代码时,当我使用IDE“pycharm”在本地主机m/c(即MAC)上运行时,我才会收到此错误,那么它就可以正常工作! (2认同)