首页 > 解决方案 > 从另一个文件夹导入 Python 中的包和模块

问题描述

我已经搜索了有关 stackoverflow 的现有问题,但无法找到我要查找的内容。首先,我是 Python 的新手,我来自 Ruby,所以在 Python 中有些事情对我来说似乎不清楚。我通过这样做来学习,我正在为支付网关编写自己的 python REST API 客户端,我计划将其发布到 PyPi。我遇到的问题是从不同的文件夹导入模块。假设我有这样的文件夹结构:

my_project/src/lib/directory1/module1.py
my_project/src/lib/directory2/module2.py

my_project/src/lib/directory1/module1.py我想导入一个定义在my_project/src/lib/directory2/module2.pyso中的函数

# my_project/src/lib/directory2/module2.py
from lib.directory2 import module1

这不起作用,它说ImportError: No module named directory2。我读到在 Python 中您需要将模块添加到 PATH 但我已经使用 PyPi 并从顶部(SeleniumBase)中获取第一个库来查看代码在 GitHub 项目中的组织方式,但我没有看到它们做任何类似的事情。您能否向我解释一下这是如何工作的,以及我如何组织我的代码库以便能够从不同的文件夹中导入一个模块中的模块来构建我自己的库?

我阅读了这篇文章https://docs.python.org/3/reference/import.html并尝试了他们在第 5.7 节中所说的内容。打包相对导入,但它不起作用

理论上这应该有效

from ..subpackage2.moduleZ import eggs

但事实并非如此。我明白了SystemError: Parent module '' not loaded, cannot perform relative import

标签: python

解决方案


仅当您尝试导入的模块与正在执行导入的脚本位于同一目录中时,导入才会起作用。

否则,您必须指定路径。

像这样 :

import my_project/src/lib/directory1/module1.py

推荐阅读