无法解决同一目录中的导入问题

2024-04-28 22:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

这段代码的目的是为我选择的歌曲写歌词。。但是我被这些语法错误阻止了。不太清楚为什么会这样

MusicBot.py:

import Opening
import json
import requests
#Variables

artist = 'lil tjay'
song_title = 'Calling My Phone'
keywords = {'phone'}

url = "https://api.lyrics.ovh/v1/" + artist + "/" + song_title


response = requests.get(url)
json_data = json.loads(response.content)

lyrics = json_data['lyrics']



browser()
enter(lyrics)

Opening.py:

import MusicBot
import pyautogui as pg
import time

start = time.perf_counter()

def browser():
    pg.hotkey("winleft")
    pg.typewrite("opera\n",0.1)
    time.sleep(2)
    pg.typewrite("beep/n" , 0.1)



def enter(lyrics):
    pg.moveTo(-1267, 259 , 0.2)
    time.sleep(1)
    pg.click(-1267, 259)
    for i in range(5):
        pg.typewrite(f"{lyrics}\n")




finish = time.perf_counter()
pg.typewrite(f"Test 3 took {finish} seconds\n")

当我想运行MusicBot.py时,我会出现以下错误:

Traceback (most recent call last):
  File "c:\Users\amanm\Desktop\Python\Python Crash Course\Part 2\MusicBot.py", line 1, in <module>
    import Opening
  File "c:\Users\amanm\Desktop\Python\Python Crash Course\Part 2\Opening.py", line 1, in <module>
    import MusicBot
  File "c:\Users\amanm\Desktop\Python\Python Crash Course\Part 2\MusicBot.py", line 20, in <module>
    browser()
NameError: name 'browser' is not defined

它们位于同一目录中: enter image description here


Tags: inpyimportbrowserjsontimeusersfile
2条回答

您需要使用modulename.functionname格式从模块中调用它。在本例中,Opening.browser()。该功能尚未直接引入程序,只能通过模块访问。如果您想直接访问它,可以尝试from Opening import browser。然后您将能够自己调用browser()。这比:

def browser(): Opening.browser()

这同样适用于enter函数。要将两个函数作为同一语句的一部分直接导入,请使用逗号分隔函数/变量/对象名称:from Opening import browser, enter

即使模块位于同一目录中,也必须以类似方式检索它。如果它位于子目录中,则需要在文件名之前使用文件夹名访问它(除非有__index__.py文件)

你不能那样调用你的函数。下面是操作的简化版本

b.py

def browser():
    return 'you have reached browser'

a.py

import b
print(b.browser())
#another option
#from b import browser
#print(browser())

输出

you have reached browser

相关问题 更多 >