无论我做什么,我都无法导入文件
I am unable to import a file no matter what I do
虽然这个问题被问了一百万次,但这个案例很特别,因为要么我很笨,要么我的笔记本电脑很笨。
因此,为了确保每个人都在同一页面上,这是我想要做的:在 fish life imulator.py
中使用 import menu
,这是我所做的文件树:
fish_life_simulator
fish_life_simulator.py
extra_programs
__init__.py
menu.py
我尝试了所有发现的方法,os.chdir
重定向到额外的程序文件夹,sys.path.append
或 sys.path.insert
、import file
或 from 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(...)
。您需要决定采用上述其中一种导入方式。
虽然这个问题被问了一百万次,但这个案例很特别,因为要么我很笨,要么我的笔记本电脑很笨。
因此,为了确保每个人都在同一页面上,这是我想要做的:在 fish life imulator.py
中使用 import menu
,这是我所做的文件树:
fish_life_simulator
fish_life_simulator.py
extra_programs
__init__.py
menu.py
我尝试了所有发现的方法,os.chdir
重定向到额外的程序文件夹,sys.path.append
或 sys.path.insert
、import file
或 from 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(...)
。您需要决定采用上述其中一种导入方式。