我有一个名为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()
调用该函数,效果很好。我不明白第一种方法有什么问题。我想直接导入函数,而不是使用*
或导入整个文件。
答案 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
答案 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语句时,代码按预期方式开始工作,但我仍然没有无法了解问题发生的原因。无论如何,都可以。