как правильно импортировать файлы, когда __init__.py ломает pyinstaller - PullRequest
0 голосов
/ 04 января 2019

Я работал над проблемой с pyinstaller, и я решил исправить эту проблему, удалив пустой файл __init__.py из моего дерева, поэтому у меня больше нет этого файла, и все работает, как ожидалось. Однако теперь я добавляю больше файлов и имею другую структуру папок:

dist
|
+--- rating_service.exe  # created by pyinstaller
service
|
+--- rating_service.py
shared
|
+--- resource_globals.py

Внутри rating_service.py я пробовал этот импорт и получаю следующие ошибки:

from . import shared

ImportError: невозможно импортировать имя 'shared'

from .. import shared

ValueError: попытка относительного импорта за пределы пакета верхнего уровня

import shared

ModuleNotFoundError: Нет модуля с именем «shared»

Как я могу получить доступ к своему resource_globals контенту в моем rating_service?

1 Ответ

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

Если невозможно добавить какие-либо __init__.py файлы, то в качестве обходного пути вы можете сделать это в вашем rating_service.py кодовом файле:

# -----------------
# rating_service.py
# -----------------
import os
import sys

# Manually add the 'shared' directory to the python search paths
file_dir = os.path.dirname(os.path.realpath(__file__))
shared_dir = os.path.join(file_dir, '../shared')
sys.path.insert(0, shared_dir)

import resource_globals
...