首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中的同一个模块目录中导入其他函数?

如何在Python中的同一个模块目录中导入其他函数?
EN

Stack Overflow用户
提问于 2017-05-10 07:03:19
回答 3查看 142关注 0票数 1

我制作了我的python模块,A.py使用B.py,如下所示。在这种情况下,如何在B.py中导入A.py?我想从其他目录中使用mylib模块。但是我的代码不工作,因为路径问题。

代码语言:javascript
复制
├── main.py
└── mylib
    ├── A.py
    ├── B.py
    ├── __init__.py
    └── main_in_mylib.py

A.py

代码语言:javascript
复制
import B
def test():
    B.hello()

B.py

代码语言:javascript
复制
def hello():
    print("hello from B")

main_in_mylib.py

代码语言:javascript
复制
import A
A.test()

main.py

代码语言:javascript
复制
import mylib.A as A
A.test()

Traceback (most recent call last):
  File "main.py", line 3, in <module>
    import mylib.A as A
  File "/home/jef/python-module/mylib/A.py", line 3, in <module>
    import B
ModuleNotFoundError: No module named 'B'

已更新

ModuleNotFoundError:没有名为'B'的模块

代码语言:javascript
复制
# main.py
from mylib.A import test
test()

ModuleNotFoundError:没有名为'B'的模块

代码语言:javascript
复制
# main.py
import mylib.B as B
import mylib.A as A
A.test()
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-10 07:07:54

您需要将A更改为

代码语言:javascript
复制
import mylib.B as B
def test():
    B.hello()

而不是

代码语言:javascript
复制
import B
def test():
    B.hello()

因为导入总是相对于您调用的脚本(在本例中是main.py)

票数 4
EN

Stack Overflow用户

发布于 2017-05-10 07:49:12

为了记录在案,这里还可以在A.py中进行相对导入

代码语言:javascript
复制
from . import B
票数 2
EN

Stack Overflow用户

发布于 2017-05-10 07:12:15

问题是您导入了一个文件,并试图使用点标记调用方法。

使用from mylib.A import test

现在,您可以在您的test()中直接使用main.py。

在python3中,您甚至不需要在目录中编写__init__.py来判断它是一个包(不过,这是一个很好的实践)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43885580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档