Python 从同一父目录中的不同文件夹导入模块时出错
我有以下python包结构:Python 从同一父目录中的不同文件夹导入模块时出错,python,import,module,package,Python,Import,Module,Package,我有以下python包结构: rkstr8/cloud/batch.py rkstr8/profiling/test.py 我正试图将名为BatchJobListStatusPoller的类从batch.py导入test.py,但它给了我一个错误:ModuleNotFoundError:在test.py中运行此导入语句时,没有名为“rkstr8”的模块: 从rkstr8.cloud.batch导入BatchJobListStatusPoller rkstr8/文件夹以及cloud/和profi
rkstr8/cloud/batch.py
rkstr8/profiling/test.py
我正试图将名为BatchJobListStatusPoller
的类从batch.py导入test.py,但它给了我一个错误:ModuleNotFoundError:在test.py中运行此导入语句时,没有名为“rkstr8”的模块
:
从rkstr8.cloud.batch导入BatchJobListStatusPoller
rkstr8/文件夹以及cloud/和profiling/子文件夹都有一个\uuuu init\uuuu.py
我做错了什么?问题在于Python只从运行程序的任何地方的目录/子目录导入模块
Python test.py
。它还搜索sys.path
变量中的模块,该变量包括标准库模块和从pip安装的任何模块。我可以想出两种方法来解决这个问题,一种是更标准的方法,另一种是更非正统的解决方法
aws sfn教程
文件夹中创建一个脚本,可以称为start\u test.py
。它的唯一用途是在启动时调用test.py
脚本,并向下传递任何命令行参数。这将允许您的
test.py
脚本能够正确地找到aws sfn教程
文件夹中的所有python模块test.py
中的sys.path
变量,将路径添加到要导入的文件中
- 您可以指定相对路径
,将其相对于当前路径向上移动一个文件夹。/
- 也可以指定文件夹的绝对路径
import sys
sys.path.append('../') # Or use the absolute path here instead
# After adding to sys.path import your module
from cloud.batch import BatchJobListStatusPoller
rkstr8是您项目的父文件夹吗?否,真正的父文件夹是
aws sfn tutorial
-->aws sfn tutorial/rkstr8/…
您运行以启动程序的第一个文件在哪里?比如当你做python where.py
的时候,我运行python test.py
,它在aws sfn教程/rkstr8/profiling/
中,是的,我的答案中提到了问题。这实际上是不可能的,因为Python只在启动程序的目录/子目录中搜索导入。我会用你可能的解决方案更新我的答案。谢谢!我实施了第二个解决方案:)