python101从父文件夹访问模块的最佳方法

2024-04-16 06:39:03 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,这是我的(好的。。凌乱)方向:

.
├── 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

分析文本中_测试.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

这很管用,但很简捷。你知道吗

为什么?你知道吗

因为。。你知道吗

我在用一种令人讨厌的方式。我不想把这段代码重新粘贴到tests文件夹(在不同的文件中)的每个unittests中

(如果我只在init.py中粘贴一次呢?你犯了个错误就是这样。但我随机尝试了一下,只是为了看看发生了什么)

那么,解决这个问题最优雅的方法是什么呢?(无需重新绘制代码(或只是将其粘贴到函数中并多次调用))

编辑: 到目前为止,这些评论还没有解决任何问题,所以我会尽量说得更清楚一点。我找到了一个有效的解决办法。因此,在tests目录中的每个文件中,我必须重新粘贴该解决方案(或者多次调用相同的函数),这正是我试图避免的。我想要一个解决方案,可以应用于测试目录中的每个文件,这样我就可以像普通一样使用从父目录导入,而不是在每个文件中附加父路径。你知道吗


Tags: 文件pathtextpytestimport目录init
1条回答
网友
1楼 · 发布于 2024-04-16 06:39:03

没关系。我找到了一个我喜欢的关于堆栈溢出的优雅解决方案。你知道吗

相当于

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) 

在名为环境py你知道吗

再加上

import env

照常导入前

见:https://stackoverflow.com/a/23386287/2738183

相关问题 更多 >