[英]Call Python function from another script?
我想从b.py
调用a.py
的函数。 我在虚拟环境中运行它。
a.py
位于/home/user/admin/
,所以在b.py
我有
import sys
sys.path.append('/home/user/admin')
from a import my_function
但是当我运行它时,我得到
from a import my_function
ImportError: No module named my_function
为什么找不到模块?
由于您是在 virtualenv 中运行脚本,因此您可能需要像这样更改当前工作目录:
import os
filepath = os.path.realpath(__file__)
dirname = os.path.dirname(filepath)
os.chdir(dirname)
from a import my_function
# do stuff
您也可以尝试使用具有以下内容的包
/home/user/admin/
任何文件夹中创建一个__init__.py
,其中包含这样的文件,python 将其识别为包。 该文件可以为空。接下来,您可以像这样从 b 导入 a:
from .a import my_function
这是一个相对导入,基本上你要做的是告诉解释器从当前包中导入a
由点引用的包。 更多细节在这里
作为旁注,不要对文件当前路径进行硬编码,而是使用以下内容:
import os
sys.path.append(os.path.dirname(__file__)) # in your case would be /home/user/admin
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.