-2

My folders looks like this:

Code_Sources (folder)
    main.py
    Class (folder)
        game_class.py
        player_class.py

I made in game_class.py:

from player_class import *

And when I run the game_class.py I have no problem. But when I run main.py which contains:

import pygame

from Class.game_class import Game

if __name__ == "__main__" :
    pygame.init()
    game = Game()
    game.run()

It says that an error comes from game_class.py and No module named 'player_class'. I don't understand why.

I tried the method of init.py but it doesn't work.

khelwood
  • 55,782
  • 14
  • 81
  • 108

1 Answers1

0

Check out python documentation on packages.

Also it's good practise to follow style guide for python code PEP8, especially the package and module names section.

Let's rebuild your code structure a bit.

code_sources
  | __init__.py
  | main.py
  | classes
      | __init__.py
      | game_class.py
      | player_class.py

The names of directories are still vague imo, think about giving them name that reflect what they are grouping inside.

All your internal imports should look like this now:

from code_sources.classes import player_class

Even when you are importing something between game_class and player_class

Also try to avoid asking questions that already has been answered or are well documented by the software creators. Python is perfect example of great documentation.

Here is one example of your question in StackOverflow: Import a module from a relative path

w8eight
  • 605
  • 1
  • 6
  • 21