在Python中从另一个程序调用程序

3
我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:

我刚接触Python编程,并遇到了问题。我已经寻找解决方案一整天,但迄今为止没有任何帮助。我正在编写一个Python时间延迟程序,但一旦它达到延迟输入,它就会给出一个错误。我尝试在同一个程序中运行它,它可以正常工作,但我想让这两个程序分开。

这是delay.py中的延迟功能。

def delayA(ina):
    ina=float(ina)
    print("okay!")
    time.sleep(ina)
    print("done!")

这是在我的主函数中调用它的地方

import delay.py

ina = input("Enter delay in seconds: ")
delayA(ina)

这是我一整天以来一直收到的错误信息

Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 2218, in _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:/Python/inputcall.py", line 1, in <module>
    import delay.py
ImportError: No module named 'delay.py'; 'delay' is not a package

提前感谢任何帮助!


“import delay” 不是 “import delay.py”,而你真正需要的是:“from delay import delayA”。注意:Python 是一种缩进语言,根据我的编辑。 - James Mills
1个回答

3
你差不多就快完成了,只是有一些小错误:
delay.py:
from time import sleep


def delayA(ina):
    ina = float(ina)
    print("okay!")
    sleep(ina)
    print("done!")

main.py:

#!/usr/bin/env python

from delay import delayA


ina = input("Enter delay in seconds: ")
delayA(ina)

我发现你只有三个错误:

  • delayA 函数缺少缩进。
  • from delay import delayA -- 不是: import delay.py
  • 实际上导入了 delayA函数。即: from foo import bar

并不是非常重要,但缺少缩进是将代码放入问题框中的错误,而不是代码本身的错误。非常感谢您的帮助。 - SassyMouthSalmon
1
对于谷歌员工来说,“import delay.py”才是错误信息的真正原因——不要添加“.py”。 - Noumenon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接