我正在Pygame中开发一款小视频游戏。我希望它在文件夹层次结构中非常清晰,所以,我已经用这种方式准备好了:
Python
Project
bin
init.py
Project.vbs
lib
constants.py
definitions.py
sprites ( useless for topic )
Project.exe
Project.exe是一个墨迹文件,是一个伪可执行文件。事实上,打开init.py是Project.vbs的快捷方式(它只是为了拥有最清晰的文件夹管理)。
我的问题是什么?我想从"bin"文件夹中的init.py导入definitions.py和constants.py,这对游戏来说绝对至关重要。顺便说一句,文件保存在我的USB密钥上,但这个文件的路径总是会改变:
在我自己的电脑上,它是C:/user/Save19/Python/...
在我高中的电脑上,是P:/documents/Python
(实习)
在我的手机上是/storage/0/Python/...
每当我复制时,路径就会改变。。。
所以我读了很多关于试图解决这个问题的主题,但任何时候都不起作用:/
我已经尝试使用:
Import constants from lib import constants from lib.definitions import *
我已经尝试了操作系统和路径
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
)。