如何在不知道路径的情况下从另一个相对文件夹导入?
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
.
我正在 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
.