尝试将常量导入到文件中,导入错误:尝试相对导入,但没有已知的父包。

15 浏览
0 Comments

尝试将常量导入到文件中,导入错误:尝试相对导入,但没有已知的父包。

这个问题已经有答案了:

Python 3中的相对导入

尝试进行无法知道父包的相对导入[重复]

我正在尝试在VSCode上运行我的代码,但是在导入另一个文件中的一些常量时遇到了以下错误:\"ImportError: attempted relative import with no known parent package\"。

import pygame
from .constants import BLACK, ROWS, RED, SQUARE_SIZE
class Board():
    def __init__(self):
        self.board = []
        self.selected_piece = None
        self.red_left = self.white_left = 12
        self.red_kings = self.white_kings = 0
    def draw_squares(self, win):
        #Win es window
        win.fill(BLACK)
        for row in range (ROWS):
            for col in range(row % 2, ROWS, 2):
                pygame.draw.rect(win, RED (row*SQUARE_SIZE, col*SQUARE_SIZE, SQUARE_SIZE, SQUARE_SIZE))

constants文件仅包含窗口高度和宽度的一些常量。

constants.py

import pygame
WIDTH, HEIGHT = 800, 800
ROWS, COLS = 8,80
SQUARE_SIZE = WIDTH//COLS
RED = (255,0,0)
WHITE = (255,255,255)
BLACK = (0,0,0)
BLUE = (0,0,255)

admin 更改状态以发布 2023年5月21日
0
0 Comments

这篇文章很好地解释了发生了什么。基本上,当 __name__ == '__main__' 时,Python 难以实现相对导入。我认为以下备选方案都可以:

  1. 使用 cd C:\Users\Mateo\Desktop\Python\Checkers && python -m checkers.board 运行脚本。

  2. 不要直接运行 board.py,而是运行 main.py,并将其导入 checkers.board。

  3. 不使用相对导入,而是直接使用 from constants import BLACK, ROWS, RED, SQUARE_SIZE

0