无法从其他文件导入功能

时间:2019-09-26 13:00:35

标签: python python-3.x

我有一个名为hotel_helper.py的文件,我想从其中导入一个名为demo1的函数,但是我无法导入它。

我的hotel_helper.py文件:

def demo1():
    print('\n\n trying to import this function ')

我的其他文件:

from hotel.helpers.hotel_helper import demo1

demo1()

但是我得到了

ImportError: cannot import name 'demo1' from 'hotel.helpers.hotel_helper'

当我使用from hotel.helpers.hotel_helper import *而不是from hotel.helpers.hotel_helper import demo1进行导入时,它可以工作并且该函数将被调用。我尝试使用from hotel.helpers import hotel_helper导入整个文件,然后使用hotel_helper.demo1()调用该函数,效果很好。我不明白第一种方法有什么问题。我想直接导入函数,而不是使用*或导入整个文件。

6 个答案:

答案 0 :(得分:0)

以下是您可以了解其链接的链接:a link

答案 1 :(得分:0)

从文件名导入函数

 from hotel.helpers import demo1


    demo1()

答案 2 :(得分:0)

如果文件名是hotel_helper.py,则必须选择如何导入demo1:

您可以将整个模块hotel_helper导入为,然后调用函数:

import hotel_helper as hh
hh.demo1()

您只能将来自模块的功能demo1导入为:

from hote_helpers import demo1
demo1()

答案 3 :(得分:0)

您可以使用以下语句导入py文件:

# Other import
import os
import sys

if './hotel' not in sys.path:
    sys.path.insert(0, './hotel')
from hotel import *

注意:
对于像PyCharm这样的IDE,您可以使用“项目结构”设置标签(CTRL + ALT + S)指定导入路径

有用的堆栈溢出问题 [可能不在主题之列]:
What is the right way to create project structure in pycharm?

使用PyCharm文档管理导入:
https://www.jetbrains.com/help/pycharm/configuring-project-structure.html

这可能与以下内容重复:https://stackoverflow.com/posts/57944151/edit

答案 4 :(得分:0)

我从您发布的2个文件中创建了两个文件(defdemo.py和rundefdemo.py),并在代码中将'defdemo'替换为'hotel.helpers.hotel_helper'。我的2个文件位于Windows 10上适用于Python 3.7的脚本目录中,而我的脚本目录位于python路径文件python37._pth中。奏效了。


defdemo.py


def demo1():     print('\ n \ n尝试导入此功能')


rundefdemo.py


从defdemo导入demo1

demo1()


输出


尝试导入此功能

答案 5 :(得分:0)

我能够解决此问题,这与我在文件中进行的某些导入有关,当我删除hotel_helper.py中的所有import语句时,代码按预期方式开始工作,但我仍然没有无法了解问题发生的原因。无论如何,都可以。