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

时间:2021-05-14 21:38:48

标签: 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

2 个答案:

答案 0 :(得分:1)

您需要 modulename.functionname 的格式才能从模块中调用它。在这种情况下,Opening.browser()。该函数并未直接带入程序,只能通过模块访问。如果您希望能够直接访问它,您可以尝试from Opening import browser。然后您将能够自行调用 browser()。这比以下更有效:

def browser(): Opening.browser()

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

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

答案 1 :(得分:0)

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

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