所以,这是我的(好吧......凌乱)dir:
.
├── app
│ ├── __init__.py
│ ├── analyze_text.py
│ ├── images.py
│ ├── main.py
│ ├── messages.py
│ ├── process_text.py
│ ├── requirements.txt
│ ├── response.py
│ └── tests
│ ├── __init__.py
│ ├── analyze_text_test.py
│ ├── test_process_text.py
│ └── unit_tests.py
└── setup.py # no idea what's going on with this
我想做的只是使用
from analyze_text import AnalyzeText
analyze_text_test.py 文件中的,但没有看到
“你是个白痴而且你不知道你在做什么”终端.. a.k.a:
ImportError: No module named (whatever)
我找到了这个解决方案:
https://stackoverflow.com/a/11158224/2738183
import os,sys,inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0,parentdir)
import mymodule
哪个有效,但它是Janky。
为什么?
因为..
我正在用Janky的方式使用它。我不想将此代码重新粘贴到tests文件夹中的每个单元测试中(它们位于不同的文件中。)
(那么如果我只是在 init .py中粘贴一次呢?你得到的错误是什么。但是我确实随机尝试了,看看发生了什么)
那么解决这个问题最优雅的方法是什么? (没有重新编写代码(或只是将其粘贴在函数中并多次调用它))
修改 到目前为止的评论没有解决任何问题,所以我会尝试使这一点更清楚。我找到了一个有效的解决方案。因此,在tests目录中的每个文件中,我必须重新粘贴该解决方案(或者调用与文件一样多次的相同功能。)这正是我想要避免的。我想要一个可以应用于测试目录中每个文件的解决方案,这样我就可以像普通一样使用父目录中的导入,而不是在每个文件中附加父路径。
答案 0 :(得分:0)
没关系。我发现了一个关于堆栈溢出的优雅解决方案。
这相当于放置
import os,sys,inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0,parentdir)
在tests目录中名为env.py
的文件中并简单地添加
import env
在照常导入之前