繁体   English   中英

Python 导入 package 时出现 ModuleNotFoundError

[英]Python ModuleNotFoundError when importing a package

当我尝试从另一个文件夹导入 package 时出现错误。 我有以下内容:

project  
|  
|-- main.py  
|  
|-- lib  
|   |-- __init__.py
|   |-- main_class.py
|   |-- global_functions.py
|   |-- cg_api_simple
|   |-- cg_api_status
|  
|-- tests    
    |-- __init__.py  
    |-- test_main_class.py  

我的lib/__init__.py有:

from lib.main_class import PyGecko

我的test/__init__.py是空的。

当我运行python3 -m unittest test_main_class.py我得到:

======================================================================
ERROR: test_main_class (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: test_main_class
Traceback (most recent call last):
  File "/usr/lib/python3.8/unittest/loader.py", line 154, in loadTestsFromName
    module = __import__(module_name)
  File "/home/someone/Documents/pythoncoingecko/tests/test_main_class.py", line 1, in <module>
    from lib import PyGecko
ModuleNotFoundError: No module named 'lib'


----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)

我已经尝试过:

  • 将 /project 和 /project/lib 添加到我的 PYTHONPATH
  • 导入前使用 sys
  • 在导入前添加..
  • 尝试从两个文件夹中删除__init__.py

我唯一没有收到错误的时间是将test_main_class.py移动到 main.py 所在的位置。 我该如何解决这个问题? 你可以在github上看到更多

https://github.com/SrJMaia/pythoncoingecko

谢谢

您所需要的只是当前工作目录、 PYTHONPATH环境变量和测试路径的适当组合。

如果从tests目录运行python3 -m unittest test_main_class.py ,则需要将project目录添加到PYTHONPATH IE:

$ PYTHONPATH=.. python3 -m unittest test_main_class.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
$ PYTHONPATH=/tmp/project python3 -m unittest test_main_class.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

或者您可以从project目录运行python3 -m unittest tests/test_main_class.py 在这种情况下,您不需要修改PYTHONPATH IE

$ python3 -m unittest tests/test_main_class.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM