我试图运行一个python脚本,但得到了ImportError:尝试在没有已知父包的情况下进行相对导入



我为这个错误找到了其他stackoverflow问题和答案,但没有一个对我有效。我的python包问题:

我试着用这些命令安装软件包,这样我就可以运行测试:

$ pip3 install virtualenv
$ virtualenv -p $(which python3.9) venv
$ source venv/bin/activate
$ pip install --upgrade pip  # stop local environments from messing things up
$ pip install -r path/to/requirements.txt

我试着运行我的测试:

$ python -m unittest discover

我得到了这个错误:

======================================================================
ERROR: some_file (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: some_file
Traceback (most recent call last):
File "/usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/lib/python3.8/unittest/loader.py", line 436, in _find_test_path
module = self._get_module_from_name(name)
File "/usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/lib/python3.8/unittest/loader.py", line 377, in _get_module_from_name
__import__(name)
File "/Users/path/some_file.py", line 3, in <module>
from .other_file import some_function, SomeClass
ImportError: attempted relative import with no known parent package

----------------------------------------------------------------------

正如错误所说,我试图在我的文件中使用一个相对路径:

from .other_file import some_function, SomeClass

我不知道python的其他版本,但我预计这在python3中是可能的。

我需要将此行添加到我的安装命令中:

$ pip install --editable .

即:

$ pip3 install virtualenv
$ virtualenv -p $(which python3.9) venv
$ source venv/bin/activate
$ pip install --upgrade pip  # stop local environments from messing things up
$ pip install -r path/to/requirements.txt
$ pip install --editable .

我还不明白为什么它有效。如果我发现更多,我会更新这个答案。

最新更新