如何在不知道路径的情况下从另一个相对文件夹导入?

How I can Import from a other relative folder wihout the knowledge of the path?

我正在 Pygame 开发一个小视频游戏。我希望它在文件夹层次结构中非常清晰,所以,我已经这样准备了:

Python 
   Project 
      bin
        init.py
        Project.vbs
      lib
        constants.py
        definitions.py
      sprites ( useless for topic )
      Project.exe

Project.exe 是一个 ink 文件,一个伪造的可执行文件。其实就是打开init.py进入Project.vbs的快捷方式(只是为了文件夹管理最清晰)

我的问题是什么? 我想从 'bin' 文件夹中的 init.py 导入 difinitions.py 和 constants.py,这对游戏来说绝对是至关重要的。 顺便说一下,文件保存在我的 USB 密钥上,但这个文件的路径总是在变化:

在我自己的电脑上,是C:/user/Save19/Python/...

在我的高中计算机上,它是 P:/documents/Python(实习)

在我的 phone 上是 /storage/0/Python/...

每当我复制时,路径都会改变...

所以我已经阅读了很多主题来尝试解决这个问题,但无论何时它都不起作用:/

我已经尝试使用 :

Import constants from lib import constants from lib.definitions import * 我已经尝试使用 os 和路径

import sys sys.path.insert(0, 'Project/lib') import constants

import sys sys.path.append('Project/lib') import constants

但无论如何它都不起作用...有人可以给我一个解决方案并解释一下吗?

这实际上取决于您从哪里开始 Python 流程。您添加的任何路径都应该相对于该位置。所以你说它是从 bin 开始的,所以你可以添加

import os
import sys

sys.path.append(os.path.abspath('../lib'))
import constants

您还可以将 __init__.py 添加到 lib,然后将 ".." 添加到路径并执行 import lib.constants as constants.

或者您可以将整个东西设置并安装为 Python 包,然后使用绝对导入,例如 import mygame.lib.constants as constants.