我有一个带有目录结构的包(或者我认为应该是包):
Switch/
tests/
testing.py
Sw.py
#otherfiles
我正在尝试从testing.py导入Sw.py。我试过几种方法,包括from .. import Sw
、import ..Sw
、from Switch import Sw
和其他几种变体。我在Switch目录和tests目录中尝试了使用和不使用and __init__.py
文件的方法。我得到的主要错误是:
Traceback (most recent call last):
File "tests/testing.py", line 10, in <module>
from .. import Sw
ImportError: attempted relative import with no known parent package
尽管我在尝试import ..Sw
和ModuleNotFoundError: No module named 'Switch'
时也会出现语法错误
我已经尽了最大努力确保包中的目录都不在path或pythonpath中,尽管我在WSL上运行安装在Windows上的Python,因此路径有些复杂
当我转到Switch上面的目录并运行python -c "import Switch.Sw"
时,它工作正常,但在Switch目录中,它以ModuleNotFoundError: No module named 'Switch'
响应
我发现问题在于,我将文件作为脚本运行,或者将命令作为脚本运行
python -c "import Sw"
将"import Sw"
视为脚本,这就是为什么相对导入和绝对导入不起作用的原因。它没有将软件视为软件包的一部分,只是一个独立的模块This Question帮我把事情弄清楚了。我应该一直在做python -m Switch.Sw
使用此代码进入目录,然后您应该能够从包中导入
我知道这很麻烦,但我不确定是否有更好的解决方案
相关问题 更多 >
编程相关推荐