我这里有3个相关文件,在这个目录中设置:
src/operator_precedence_high_roller_bot/
parsing/
command_parser.py
high_roller.py
tests/test_high_roller/
test_handle_gamble_start.py
command_parser.py的内容并不是非常相关,因为重要的部分是它需要导入到High_Roller中。本质上,high_roller.py 是当需要解析命令时调用 command_parser.py 的代码。
high_roller.py
从解析文件夹中的command_parser.py导入CommandParser
...
from parsing.command_parser import CommandParser
...
test_handle_gamble_start.py
import pathlib, sys, os
ROOT_PATH = pathlib.Path(__file__).parents[2] sys.path.append(os.path.join(ROOT_PATH, 'src'))
print(sys.path)
from operator_precedence_high_roller_bot import high_roller
我想出了几种不同的方法将 high_roller.py 导入 test_handle_gamble_start.py (我通过用 print("here") 语句替换所有原始代码来验证这一点,并且在运行 test_handle_gamble_start 时,它只是打印“here”) .但是当我将行
from parsing.command_parser import CommandParser 添加回 high_roller.py 并尝试运行 test_handle_gamble_start.py 时,我收到以下错误: ModuleNotFoundError:没有名为“parsing”的模块
据我所知,我需要做一些尚未完成的事情来将解析文件夹显示给 test_handle_gamble_start.py。我为此尝试了几种不同的方法。首先,我尝试在相关目录中添加 _
init_.py 文件,但这没有帮助。然后我尝试将解析目录的路径添加到test_handle_gamble_start.py中的sys.path中,但没有做任何事情。然后我尝试将其添加到 high_roller.py 中的 sys.path 中,但这也没有帮助。最后,我尝试将operator_precedence_high_roller_bot放入一个包中,我认为它也没有做任何事情。
包裹在这里:https://pypi.org/project/operator-precedence-high-roller-bot/
github 存储库在这里,如果我没有详细说明解析功能的语义,我可以有一个自述文件:https://github.com/carsonrobertsg2019/operator-precedence-high-roller/
operator_precedence_high_roller/
parsing/
command_parser.py
high_roller.py
tests/test_high_roller/
test_handle_gamble_start.py
import pathlib
import sys
import os
ROOT_PATH = pathlib.Path(__file__).parents[1]
sys.path.append(os.path.join(ROOT_PATH, ''))
from operator_precedence_high_roller.parsing.command_parser import CommandParser
上面的high_roller.py基本上将项目目录添加到path.lib中,以便测试python文件可以看到导入的模块,如CommandParser。
import pathlib
import sys
import os
ROOT_PATH = pathlib.Path(__file__).parents[2]
sys.path.append(os.path.join(ROOT_PATH, ''))
from operator_precedence_high_roller import high_roller
上面的 test_handle_gamble_start.py 与 high_roller.py 中的 sys.path 操作相同,这次需要“parents[2]”而不是“parents[1]”,因为测试 python 脚本在目录比 high_roller