Как я могу импортировать из другой относительной папки без знания пути? - PullRequest
0 голосов
/ 30 января 2019

Я работаю над небольшой видеоигрой в 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 (это просто для ясного управления папками).

В чем моя проблема?Я хочу импортировать difinitions.py и constants.py из файла init.py, который находится в папке 'bin', это просто крайне важно для игры.Кстати, файлы сохраняются на моем USB-ключе, но путь к нему всегда меняется:

На моем собственном компьютере это C:/user/Edhyjox/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

Но это все равно не работает ... Может кто-нибудь дать мне решение и объяснить его?

1 Ответ

0 голосов
/ 30 января 2019

Это действительно зависит от того, откуда вы запускаете процесс 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.

...