python - 尝试将常量导入文件,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)
解决方案
这篇文章很好地解释了发生了什么。基本上 Python 在__name__ == '__main__'
. 我认为以下替代方案都可以:
您可以使用运行脚本
cd C:\Users\Mateo\Desktop\Python\Checkers && python -m checkers.board
不要直接运行 board.py,而是运行 main.py,然后让它导入 checkers.board。
不要使用相对导入,而只需使用
from constants import BLACK, ROWS, RED, SQUARE_SIZE
.
推荐阅读
- oracle - Oracle 更新语句与 Join
- git - 尝试克隆 TensorFlow 存储库时 git clone 不起作用
- amazon-web-services - AWS CloudFormation:新创建的 EC2 密钥对出现“密钥对 ___ 不存在”错误
- python - Where to initialize SQLAlchemy instance with Flask-restplus
- c# - 使用 win32 api 获取 Treeview(SysTreeView32) 项目文本
- ios - 如何让我的文本字段在 iOS 中消失?
- php - 语句中的打印函数始终返回 true
- php - Httpful 帖子和 URL 参数
- if-statement - 与`if let`语句范围混淆
- python - 测试描述符是否已经解包的有效方法是什么?