从另一个文件调用 Python 函数
Calling a Python function from another file
这个问题困扰了我几天。
我有两个文件,helpers.py
和 launcher.py
。
在 helpers.py
中我定义了函数 hello()
,它打印 "hello".
我想在launcher.py.
打电话给hello()
这是我在launcher.py
中写的:
from helpers import hello
....
helpers.hello()
但是当我 运行 它时,我得到了这个:
from helpers import hello
ImportError: No module named helpers
我该如何解决这个问题?
根据答案/评论进行编辑
- 我正在使用 OS X 和 Python 3.4
- 两个文件在同一个目录下
两种方式我都试过了:
from helpers import hello
hello()
和
import helpers
helpers.hello()
但还是这个错误:
import helpers
ImportError: No module named 'helpers'
我觉得应该是Terminal的CLASSPATH有问题
第二次编辑
was an issue, but in the end 中突出显示的问题已解决。
无法发表评论,请问这两个文件在同一个文件夹中吗?我会尝试:
from helpers.py import hello
python 解释器没有找到您的模块 "helpers"。
您使用什么操作系统工作?
当您在 Unix/Linux 或类似目录下,并且您的文件位于同一目录中时,它应该可以工作。但是我听说,例如在 Windows 上工作时遇到了麻烦。也许,必须设置搜索路径。
看这里:
https://docs.python.org/2/tutorial/modules.html#the-module-search-path
编辑:Michael 是对的,当您执行 "from helpers import ..." 时,模块不是这样导入的,但系统只知道 hello!
随心所欲
from helpers import hello
hello()
或:
import helpers
helpers.hello()
Still the import error must be solved. For that, it would be useful to
know your system and directory structure! On a system like Windows, it might be necessary, to set PYTHONPATH accordingly (see link above).
这一行有问题:
helpers.hello()
替换为:
hello()
现在可以使用了,因为您只从 helpers
模块导入了名称 hello
。您尚未导入名称 helpers
本身。
所以你可以拥有这个:
from helpers import hello
hello()
或者你可以这样:
import helpers
helpers.hello()
from helpers import hello
....
helpers.hello() ## You didn't import the helpers namespace.
你的问题是理解命名空间的问题。您没有导入 helpers 命名空间...这就是解释器无法识别 helpers 的原因。我强烈建议您阅读命名空间,因为它们在 python.
中非常有用
Offical Python Namespace Document
看看上面的这些链接。
文件系统:
__init__.py
helpers.py <- 'hello' function
utils
__init__.py <- functions/classes
barfoo.py
main.py
主要...
from helpers import hello
hello()
import utils # which ever functions/classes defined in the __init__.py file.
from utils import * # adds barfoo the namespace or you could/should name directly.
我重置了 CLASSPATH,但不知何故它工作正常。奇怪的问题。谢谢大家!
我遇到了同样的问题:ModuleNotFoundError:没有名为 "Module_Name" 的模块。
在我的例子中,我调用它的模块和脚本都在同一个目录中,但是,我的工作目录不正确。使用以下命令更改工作目录后,我的导入工作正常:
import os
os.chdir("C:\Path\to\desired\directory")
这个问题困扰了我几天。
我有两个文件,helpers.py
和 launcher.py
。
在 helpers.py
中我定义了函数 hello()
,它打印 "hello".
我想在launcher.py.
hello()
这是我在launcher.py
中写的:
from helpers import hello
....
helpers.hello()
但是当我 运行 它时,我得到了这个:
from helpers import hello
ImportError: No module named helpers
我该如何解决这个问题?
根据答案/评论进行编辑
- 我正在使用 OS X 和 Python 3.4
- 两个文件在同一个目录下
两种方式我都试过了:
from helpers import hello hello()
和
import helpers helpers.hello()
但还是这个错误:
import helpers ImportError: No module named 'helpers'
我觉得应该是Terminal的CLASSPATH有问题
第二次编辑
无法发表评论,请问这两个文件在同一个文件夹中吗?我会尝试:
from helpers.py import hello
python 解释器没有找到您的模块 "helpers"。
您使用什么操作系统工作?
当您在 Unix/Linux 或类似目录下,并且您的文件位于同一目录中时,它应该可以工作。但是我听说,例如在 Windows 上工作时遇到了麻烦。也许,必须设置搜索路径。
看这里: https://docs.python.org/2/tutorial/modules.html#the-module-search-path
编辑:Michael 是对的,当您执行 "from helpers import ..." 时,模块不是这样导入的,但系统只知道 hello!
随心所欲
from helpers import hello
hello()
或:
import helpers
helpers.hello()
Still the import error must be solved. For that, it would be useful to know your system and directory structure! On a system like Windows, it might be necessary, to set PYTHONPATH accordingly (see link above).
这一行有问题:
helpers.hello()
替换为:
hello()
现在可以使用了,因为您只从 helpers
模块导入了名称 hello
。您尚未导入名称 helpers
本身。
所以你可以拥有这个:
from helpers import hello
hello()
或者你可以这样:
import helpers
helpers.hello()
from helpers import hello
....
helpers.hello() ## You didn't import the helpers namespace.
你的问题是理解命名空间的问题。您没有导入 helpers 命名空间...这就是解释器无法识别 helpers 的原因。我强烈建议您阅读命名空间,因为它们在 python.
中非常有用Offical Python Namespace Document
看看上面的这些链接。
文件系统:
__init__.py
helpers.py <- 'hello' function
utils
__init__.py <- functions/classes
barfoo.py
main.py
主要...
from helpers import hello
hello()
import utils # which ever functions/classes defined in the __init__.py file.
from utils import * # adds barfoo the namespace or you could/should name directly.
我重置了 CLASSPATH,但不知何故它工作正常。奇怪的问题。谢谢大家!
我遇到了同样的问题:ModuleNotFoundError:没有名为 "Module_Name" 的模块。 在我的例子中,我调用它的模块和脚本都在同一个目录中,但是,我的工作目录不正确。使用以下命令更改工作目录后,我的导入工作正常:
import os
os.chdir("C:\Path\to\desired\directory")