Модули Python не найдены? - PullRequest
       11

Модули Python не найдены?

0 голосов
/ 13 февраля 2011

Я новичок в Python, пытаюсь узнать, как правильно настроить модуль.

У меня есть следующее:

 dir1
    pack1.py
        dir2
           pack2.py

... и, конечно, в моих каталогах у меня есть __init__.py

Теперь я пытаюсь получить pack2.py для наследования от pack1.py

Получил следующее:

class Pack2(Pack1):
    def __repr__(self):
       ....my code goes here....

И я хочу импортировать это в мою программу, чтобы я мог использовать Pack2

Моя проблема: я ужасно стараюсь выяснить оператор импорта, который будет использоваться в моей программе и в файле pack2.py

Я пытался (в моей программе):

from dir1.dir2 import pack2

и в упаковке 2

from dir1 import pack1

но без кубиков. Это кажется правильным?

Ответы [ 2 ]

2 голосов
/ 13 февраля 2011

В python выполнение import module не делает все имена, определенные в модуле, непосредственно доступными в текущем пространстве имен ... вам нужно использовать module.name для доступа к ним.Если вы хотите, чтобы все имена, определенные в модуле, были доступны напрямую, вы должны сделать что-то вроде from module import *.

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

  • В основной программе from dir1.dir2.pack2 import Pack2
  • Вместо pack1.pyВы должны использовать from dir2.pack2 import Pack2
2 голосов
/ 13 февраля 2011

Вы установили свой путь Python? Если этого не произойдет, интерпретатор Python вряд ли сможет найти все ваши модули.

Каталог каждого скрипта находится в пути Python, поэтому модули могут импортировать другие модули в тех же или более низких каталогах. Но модули, которые должны импортировать вещи из родительских каталогов, должны сделать немного больше работы.

Решение состоит в том, чтобы изменить sys.path:

import sys
# Add parent directory to path
sys.path.append('..')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...