无论我做什么,我都无法导入文件

I am unable to import a file no matter what I do

虽然这个问题被问了一百万次,但这个案例很特别,因为要么我很笨,要么我的笔记本电脑很笨。 因此,为了确保每个人都在同一页面上,这是我想要做的:在 fish life imulator.py 中使用 import menu,这是我所做的文件树:

我尝试了所有发现的方法,os.chdir 重定向到额外的程序文件夹,sys.path.appendsys.path.insertimport filefrom file import def__init__.py 如您所见,但我似乎总是遇到同样的错误:ModuleNotFoundError: No module named 'menu'

编辑:这是我的代码示例: fish_life_simulator

import pygame, random, time, sys, os
from pygame.locals import *

os.chdir(os.path.dirname(__file__))

pygame.init()

size_of_monitor = pygame.display.Info()

flags = RESIZABLE

width = size_of_monitor.current_w - 25
height = size_of_monitor.current_h - 50

from extra_programs import menu

screen, screen_size, menu_background_image, menu_background_stretched_image, menu_background_rect = initiation(width, height, flags)

menu.py

def initiation(width, height, flags):
    
    
    screen = pygame.display.set_mode((width, height), flags)

    screen_size = screen.get_size()

    menu_background_image = pygame.image.load(r'sprites\menu_background.jpg')
    menu_background_stretched_image = pygame.transform.scale(menu_background_image, (screen_size))
    menu_background_rect = menu_background_stretched_image.get_rect()

    return screen, screen_size, menu_background_image, menu_background_stretched_image, menu_background_rectscreen, screen_size, menu_background_image, menu_background_stretched_image, menu_background_rect

在文件夹内fish_life_simulator执行

PYTHONPATH=. python fish_life_simulator.py

您的导入在 fish_life_simulator.py 中的哪个位置

from extra_programs import menu
...

或文件夹外一层fish_life_simulator执行

PYTHONPATH=fish_life_simulator/  python fish_life_simulator/fish_life_simulator.py

您的导入在 fish_life_simulator.py 中的哪个位置

from fish_life_simulator.extra_programs import menu
...

我让它可以使用以下文件夹结构和以下代码:

fish_life_simulator
|-- extra_programs
|   |-- __init__.py
|   `-- menu.py
`-- fish_life_simulator.py

menu.py

def menu():
    print("hello from menu")

fish_life_simulator.py

from extra_programs import menu

menu.menu()

根本不需要编辑路径或类似的东西。

只需导航到文件夹 fish_life_simulator 和 运行 使用 python fish_life_simulator.py 的代码。

如果您不想输入 menu. 前缀,您可以像下面这样调整 fish_life_simulator.py

from extra_programs.menu import menu

menu()

在你的代码中,你缺少前缀,当调用 initiation(...) 时,它应该是 menu.initiation(...)。您需要决定采用上述其中一种导入方式。