0

К примеру, мне нужно импортировать библиотеку main.py в index.py и библиотеку index.py в info.py. Как?

Дерево проекта:

project_name
├── data
│   ├── info.py >>> second = 'World'
├── general
│   ├── main.py >>> first = 'Hello, '
└── index.py »»»concatenation = None
insolor
  • 49,104

1 Answers1

5
.
├── data
│   ├── info.py
│   ├── __init__.py
├── general
│   ├── __init__.py
│   ├── main.py
└── index.py

index.py:

import data.info
import general.main

print (general.main.first + data.info.second)

результат

user@desktop:~/python/test03$ python index.py 
Hello, World

Файлы __init__.py в папках data и general (в данном случае пустые) нужны для того, чтобы интерпретатор python воспринимал их как пакеты/модули.

andy.37
  • 7,461
  • Не подскажите, где можно о .pyc и init. почитать? На RU. – KryfoAgapi Mar 02 '16 at 08:21
  • @KryfoAgapi на файлы .pyc - не обращайте внимания, они создаются сами, это байт-код (я их убрал из ответа). Я читал на официальном сайте python.org, но на EN, либо в любой нормальной книжке по питону. – andy.37 Mar 02 '16 at 08:24
  • @KryfoAgapi книги смотрите тут: http://ru.stackoverflow.com/questions/1579/%D0%9A%D0%BD%D0%B8%D0%B3%D0%B8-%D0%BF%D0%BE-python – andy.37 Mar 02 '16 at 08:31
  • init - тоже сами?

    – KryfoAgapi Mar 02 '16 at 09:11
  • @KryfoAgapi, Вам нужно сделать файлы __init__.py в нужных папках самому. Их за Вас никто не сделает, т.к. только Вы знаете, должна ли являться данная папка пакетом модулей. О соответсвующих .pyc файлах позаботится сам python. – andy.37 Mar 02 '16 at 09:33
  • 1
    Будет работать и без __init__.py, хотя лучше их создать, чтобы неявные namespace пакеты не использовались. – jfs Mar 02 '16 at 13:19
  • @jfs, забавно, Вы правы. Просто я пользуюсь 2-м питоном, там без __init__.py не работает, а в 3-м работает. – andy.37 Mar 02 '16 at 13:33
  • Благодарю за ответы. – KryfoAgapi Mar 02 '16 at 18:13