python - 从 Python 中的子文件夹导入

标签 python import

情况是这样的。我正在使用 Python 3.6

我目前有下一个文件夹组织:

/MainProject
  __init__.py
    /Folder1
      pyscript1.py
      pyscript2.py
      __init__.py
    /Folder2
      pyscript3.py
      __init__.py

因此,我试图从 pyscript3 中获取存在于 pyscript1.py 中的函数。我还在每个级别添加了一个 init.py。在 pyscript3.py 中,我尝试了以下操作:

from . import Folder1

报错:

ImportError: cannot import name 'Folder1'

我也试过:

from .Utils import script1

报错:

ModuleNotFoundError: No module named '__main__.Utils'; '__main__' is not a 
package

我知道我可以通过以下方式使用 sys 和 os 解决它:

sys.path.append(os.path.realpath('../..'))

但我想知道在不使用 sys 的情况下这是否可行。

最佳答案

请注意,Folder1 是一个目录,.py 脚本是您的模块。

pyscript3 中你应该可以去:

from Folder1 import pyscript1

然后您可以访问名称为 methodname 的方法,例如:

pyscript1.methodname()

否则你可以像这样直接导入方法:

from Folder1.pyscript1 import methodname

并像这样使用它:

methodname()

编辑:

要让您的程序看到 Folder1Folder2,您需要从 MainProject 文件夹运行您的程序。

pyscript3 移动到您的 MainFolder 或编写另一个脚本,我们称之为 main.py,并调用必要的代码来实例化在 pyscript3.py 中类/调用您想要的函数。

总而言之,您总是希望从项目的基本文件夹运行入口模块。

关于python - 从 Python 中的子文件夹导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51295385/

相关文章:

javascript - pdf生成后重定向

python - 从 URL 打开获取 JSON

python - 无法使用 MySQL 数据写入文件

java - 无法使用 Maven 在 Android Studio 中导入 GSON/JSON

node.js - 导入不起作用 NodeJs 应用程序 React SSR

r - 通过可共享的谷歌驱动器链接将 csv 读入 R

python - Django REST FileUpload 序列化程序返回 {'file' : None}

python - Flask-SQLAlchemy 检查数据库中是否存在表

css - Bourbon Neat 的 SASS(不是 SCSS)版本

perl - perl 命令中是否有检查未定义函数的选项?