Импортировать модуль из относительного пути

Вы можете использовать веб-инструменты FontSquirrel для этого: http://www.fontsquirrel.com/fontface/generator

  • Эксперт
  • Подмножество: пользовательская подмножество
  • Одиночные символы

735
задан Peter Mortensen 28 August 2017 в 13:52
поделиться

6 ответов

Это - соответствующий PEP:

http://www.python.org/dev/peps/pep-0328/

, В частности, предполагая dirFoo является каталогом от dirBar...

В dirFoo\Foo.py:

from ..dirBar import Bar
43
ответ дан Peter Crabtree 28 August 2017 в 13:52
поделиться

Если Вы структурируете свой проект этот путь:

src\
  __init__.py
  main.py
  dirFoo\
    __init__.py
    Foo.py
  dirBar\
    __init__.py
    Bar.py

Тогда от Foo.py необходимо быть в состоянии сделать:

import dirFoo.Foo

Или:

from dirFoo.Foo import FooObject

На комментарий Tom, это действительно требует, чтобы src папка была доступна или через site_packages или Ваш путь поиска. Кроме того, как он упоминает, __init__.py неявно импортируется, когда Вы сначала импортируете модуль в том пакете/каталоге. Обычно __init__.py просто пустой файл.

78
ответ дан Peter Mortensen 28 August 2017 в 13:52
поделиться

Вы могли также добавить подкаталог к своему пути Python так, чтобы это импортировало как нормальный сценарий.

import sys
sys.path.insert(0, <path to dirFoo>)
import Bar
254
ответ дан Louis Maddox 28 August 2017 в 13:52
поделиться

Убедитесь, что dirBar имеет __init__.py файл - это превращает каталог в пакет Python.

321
ответ дан S.Lott 28 August 2017 в 13:52
поделиться

Самый легкий метод должен использовать sys.path.append ().

Однако можно также интересоваться импорт модуль. Это обеспечивает доступ к внутренним функциям импорта.

# mod_name is the filename without the .py/.pyc extention
py_mod = imp.load_source(mod_name,filename_path) # Loads .py file
py_mod = imp.load_compiled(mod_name,filename_path) # Loads .pyc file 

Это может привыкнуть к загрузочным модулям динамично, когда Вы не знаете имя модуля.

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

кроме того, эти функции могут быть полезными:

imp.find_module(name[, path])
imp.load_module(name, file, pathname, description)
44
ответ дан monkut 28 August 2017 в 13:52
поделиться

Добавьте файл __init__.py:

dirFoo\
    Foo.py
    dirBar\
        __init__.py
        Bar.py

Затем добавьте этот код в начало Foo.py:

import sys
sys.path.append('dirBar')
import Bar
6
ответ дан 22 November 2019 в 21:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: