首页 > 解决方案 > 尝试将常量导入文件,ImportError:尝试相对导入而没有已知的父包

问题描述

我试图运行我的代码 o vscode anda 从另一个文件导入一些常量时出现以下错误:“ImportError:尝试使用没有已知父包的相对导入”。

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))

文件常量只包含一些具有窗口高度和宽度的常量

常量.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)

标签: pythonpygame

解决方案


这篇文章很好地解释了发生了什么。基本上 Python 在__name__ == '__main__'. 我认为以下替代方案都可以:

  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.


推荐阅读