python - 从另一个文件夹导入 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.py
so中的函数
# 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
。
解决方案
仅当您尝试导入的模块与正在执行导入的脚本位于同一目录中时,导入才会起作用。
否则,您必须指定路径。
像这样 :
import my_project/src/lib/directory1/module1.py
推荐阅读
- macos - 尽管授权成功,但 MacOS 上的 SFSpeechRecognizer 不可用
- javascript - 是否可以远程获取 ls-files 之类的 git 树?
- python - Flask、Python 和 Socket.io:从 threading.Timer 断开连接时出现“RuntimeError:在请求上下文之外工作”
- java - 装饰器设计模式 (Java) 中的重写方法
- laravel - 调用未定义的方法 Illuminate\Database\Eloquent\Builder::transform()
- numpy - 从 。import _mklinit ImportError: DLL load failed: 找不到指定的模块
- android - 数据绑定:无法调用观察者方法/Resources$NotFoundException
- listview - 具有 AutoSize 高度的 Xamarin.Forms ListView
- openssl - 获取 RSA PRIVATE KEY 而不是 PRIVATE KEY
- c++ - 在类中使用对文字的 const 引用时 C++ O2 内存泄漏