首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3.6错误: ModuleNotFoundError:没有名为'src‘的模块

Python3.6错误: ModuleNotFoundError:没有名为'src‘的模块
EN

Stack Overflow用户
提问于 2018-06-27 02:50:53
回答 3查看 65.1K关注 0票数 23

我知道以前也有人问过类似的问题...但我有个小小的疑问。我一直在关注这个链接:https://www.python-course.eu/python3_packages.php

我的代码结构:

代码语言:javascript
复制
my-project
  -- __init__.py
  -- src
      -- __init__.py
      -- file1.py
  -- test
      -- __init__.py
      -- test_file1.py

test_file1.py:

代码语言:javascript
复制
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()

下面是我得到的错误:

代码语言:javascript
复制
ModuleNotFoundError: No module named 'src'

如果我更改为:

代码语言:javascript
复制
import sys
sys.path.insert(0, '../src')
import unittest
from file1 import *

然后它就能工作了!

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

谢谢!

编辑:

在执行完我的项目目录:` `python -m unittest test/testfile1/TestWriteDataBRToOS之后,我得到了上面更新的错误。

代码语言:javascript
复制
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.
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-27 03:28:17

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

代码语言:javascript
复制
python -m unittest test.test_file1.TestWriteDataBRToOS
票数 22
EN

Stack Overflow用户

发布于 2021-02-13 06:59:19

你也可以这样做:

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

或在Windows中:

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

票数 7
EN

Stack Overflow用户

发布于 2018-06-27 03:18:20

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51049663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档