我知道以前也有人问过类似的问题...但我有个小小的疑问。我一直在关注这个链接:https://www.python-course.eu/python3_packages.php
我的代码结构:
my-project
-- __init__.py
-- src
-- __init__.py
-- file1.py
-- test
-- __init__.py
-- test_file1.pytest_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 *然后它就能工作了!
谁能帮助我理解为什么它不能像上面粘贴的链接中描述的那样工作,或者用任何替代方法代替编写sys.path.insert(0, '../src')语句。
谢谢!
编辑:
在执行完我的项目目录:` `python -m unittest test/testfile1/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.发布于 2018-06-27 03:28:17
您必须从my-project文件夹而不是从test文件夹运行测试。
python -m unittest test.test_file1.TestWriteDataBRToOS发布于 2021-02-13 06:59:19
你也可以这样做:
导出PYTHONPATH="${PYTHONPATH}:/path/to/your/project/“
或在Windows中:
set PYTHONPATH="${PYTHONPATH}:/path/to/your/project/"
发布于 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‘模块。
https://stackoverflow.com/questions/51049663
复制相似问题