将 python 文件夹转换为包:`ModuleNotFoundError`

Transform a python folder into a package: `ModuleNotFoundError`

假设在文件夹 my_package 中,我有三个文件:

然后,在另一个目录中,当我使用 import my_package.file2 as file2 时,我有一个 ModuleNotFoundError 来自语句 from file1 import function1 的行。

显然,我在某处做错了。但是哪里 ?我给出的 MWE 很小,但我在 my_package 文件夹中添加了很多 python 文件,其中一些文件相互导入。我正在尝试将此目录更改为可以从其他地方导入的包,这就是我添加 __init__.py blanck 文件的原因,但它似乎无法那样工作。

检查这个树结构。

my_package
  |
  '-----  __init__.py
  '----- file1.py
  '----- file2.py

Script   (somewhere in your system)
  |
  '--- test.py

当您在 test.py 中的另一个目录中导入 my_package(将 my_package.file2 导入为文件 2)时,它会在其目录中查找名为 my_package 的目录当前路径..(即在脚本文件夹内)

因为脚本文件夹中不存在 my_package,您将收到错误 ModuleNotFoundError。

所以在test.py中写下如下代码

import sys

sys.path.append("/home/MyFiles/my_package")  # absolute path of the my_package folder

import file2

# Now use file2 and work on it

# all other modules/files in my_package folder can also be  imported.

我想我自己找到了解决方案:我在文件夹中添加了一个包含适当内容的 setup.py 文件,然后我 运行 pip -m my_package,允许我从任何地方导入它。 .