我仍然是Python的新手,但是我已经学到了很多东西。但是,我终于碰到了我自己无法解决的砖墙。
我正在尝试运行一个利用在两个应用程序之间使用的共享模块的应用程序。我也一直在同一级别的单独文件夹中编写一些测试。当我尝试从命令行运行app1时,它抛出“没有模块命名”错误,并在堆栈跟踪中引用了共享模块。当我从同一位置运行pytest
时,引用共享模块的测试将在没有错误的情况下执行。
我已确保相关文件夹包含__init__.py
文件。我还确保从适当的位置(proj1)运行python3 ./App1/server.py
命令。我的开发使用virtualenv,并且确保它处于活动状态。
使用的文件夹结构:
proj1
-- app1
-- __init__.py
-- app
-- __init__.py
-- some_flask_controller.py
-- server.py
-- app2
-- __init__.py
-- No other relevant details here
-- shared
-- __init__.py
-- some_file.py
-- tests
-- __init__.py
-- shared_tests
-- __init__.py
-- test_some_file.py
尝试运行python3 ./App1/server.py
时的堆栈:
Traceback (most recent call last):
File ".\App1\app.py", line 1, in <module>
from app import app
File "\Proj1\App1\app\__init__.py", line 10, in <module>
from app.some_flask_controller import mod_requests as request_module
File "\Proj1\App1\app\some_flask_controller.py", line 5, in <module>
from shared.some_file import some_class
ModuleNotFoundError: No module named 'shared'
我期望pytest
和python3 ./App1/server.py
返回此错误,或两者都起作用。但是,只有pytest
正常执行。有这个原因吗?