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

2024-06-01 13:46:59 发布

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

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

  • __init__.py,布兰克
  • file1.py,包含一个函数function1
  • file2.py,包含导入语句:from file1 import function1

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

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


Tags: 文件函数frompyimport目录文件夹package
2条回答

检查此树结构

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,允许我从任何地方导入它

相关问题 更多 >