【问题标题】:How I can Import from a other relative folder wihout the knowledge of the path?如何在不知道路径的情况下从另一个相对文件夹导入?
【发布时间】:2019-01-30 19:23:28
【问题描述】:

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

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

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

我的问题是什么? 我想从“bin”文件夹中的 init.py 中导入 difinitions.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

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

【问题讨论】:

  • 不,这不是因为我已经尝试将 somes 'init.py' 添加到所有文件夹但仍然无法正常工作...
  • 添加初始化文件后,您是否尝试过那里的答案中提到的相对导入?
  • 据说'常数'模子不存在...
  • 检查拼写。常量???

标签: python import pygame python-import python-3.7


【解决方案1】:

这真的取决于您从哪里开始 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

【讨论】:

  • 非常感谢:与import os import sys sys.path.append(os.path.abspath('../lib')) import constants合作
  • 如果这个问题对您有帮助,请为我的问题投票,这有助于我赢得一些声誉! :D
猜你喜欢
  • 2017-10-08
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-08
相关资源
最近更新 更多