2016-07-20 2 views
0

В моей папке проекта у меня есть две папки: classes и fonts.
В каталоге fonts содержатся шрифты .ttf и связанные файлы (например, специальные свойства письма и ширины). Например, мой шрифт item имеет связанный файл item.ttf и файл item.widths.Функция запуска в отдельной папке

Теперь я хотел бы добавить еще один файл для каждого шрифта, который содержит функцию, связанную с рендерингом, поэтому каждый шрифт может иметь свой собственный стиль контура или эффект свечения или что-то еще, что будет обрабатываться кодом в этом файле.

Есть ли способ для вызова функции из этих файлов из папки classes без необходимости реорганизации структуры моей папки? Можно ли вызвать, например, функцию в fonts/item_render.py с classes/text.py?

+0

Is ['os.chroot (path)'] (https://docs.python.org/2/library/os.html#os.chroot) что вы ищете? – Sam

+0

1) Вы можете добавить 'fonts' в syspath из любой загрузки вашего пакета' classes'. 2) Сделайте 'fonts' и' classes' в подпакеты вашего игрового пакета, а затем просто 'from .. import fonts.blah'. 3) Избегайте смешивания кода и данных. Почему бы просто не поместить код в классы? –

+0

Сэм, он говорит, что он недоступен в Windows, поэтому даже если бы это было решение, я не мог его использовать. Спасибо за попытку помочь. @MadPhysicist Спасибо за указатель syspath, который работал отлично. Чтобы ответить на 3, я просто использую такие файлы, как это из других проектов, где это не помогло. Теперь я чувствую себя чище. – leod

ответ

0

После того, что сказал Mad Физик, редактирование sys.path включить каталог проекта работает отлично, так как:

import sys 
sys.path.append('C:\\Path\\to\\Project\\') 
import fonts 

же код работает для модулей в любом другом месте, добавляя их соответствующие пути, а также.

Ответил это сам, поэтому я могу отметить его как таковой.

+0

Это работает, и есть несколько подобных ответов на SO. Но это не считается хорошей практикой входить в путь python таким образом (может привести к побочным эффектам в какой-то момент?). Правильный способ решения вашего дела - создать полную структуру проекта python (включая setup.py), которую вы можете установить как разработчик (т. Е. Через «python setup.py develop»), желательно изнутри venv. Когда это будет сделано, путь вашего проекта будет принадлежать вашему пути python (в вашем вену), и у вас не будет проблем с импортом чего-либо из вашего проекта. – zezollo

Смежные вопросы