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

将python文件夹转换为包:`ModuleNotFoundError`,python,python-module,Python,Python Module,假设在文件夹my_package中,我有三个文件: \uuuuu init\uuuuuuuuuuuuuuupy,布兰克 file1.py,包含函数function1 file2.py,包含导入语句:来自file1导入函数1 然后,从另一个目录中,当我使用import my_package.file2 as file2时,我有一个ModuleNotFoundError来自file1 import function 1的语句 显然,我在什么地方做错了什么。但是在哪里呢?我给出的MWE很小,但我在

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

  • \uuuuu init\uuuuuuuuuuuuuuupy
    ,布兰克
  • file1.py
    ,包含函数
    function1
  • file2.py
    ,包含导入语句:
    来自file1导入函数1
然后,从另一个目录中,当我使用
import my_package.file2 as file2
时,我有一个
ModuleNotFoundError
来自file1 import function 1的语句


显然,我在什么地方做错了什么。但是在哪里呢?我给出的MWE很小,但我在
myu包
文件夹中附加了很多python文件,其中一些文件相互导入。我正试图将此目录更改为一个可以从其他地方导入的包,这就是为什么我添加了
\uuu init\uuuuu.py
blank文件,但它似乎不起作用。

检查此树结构

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

Script   (somewhere in your system)
  |
  '--- test.py
当您在另一个目录(比如test.py)中导入my_package(将my_package.file2导入为file2)时,它会在其当前路径中查找名为my_package的目录。。(即脚本文件夹内)

由于脚本文件夹中不存在my_程序包,您将获得错误模块NotFoundError

因此,在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.

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

您的目录结构是什么?不幸的是,这很重要!