Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> import файлов находящихся в соседней папке, как это сделать? 
:(
    Опции темы
zloyGamer
Дата 13.6.2010, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 24.2.2008
Где: аватар какает

Репутация: нет
Всего: нет



добрый вечер всем

подскажите как для такой структуры каталогов/файлов :
Цитата

    myFunc2\__init__.py
    myFunc2\testmod2.py
    prj\myFunc1\__init__.py
    prj\myFunc1\testmod1.py
    prj\myFunc1\testmod1.pyc
    prj\__init__.py
    prj\prj0.py
    __init__.py


из "prj\prj0.py" импортировать обьекты "myFunc2\testmod2.py"

если в "prj\prj0.py" прописать:
from myFunc1.testmod1 import *  # - тут все ок!

#а если так:
from ..myFunc2.testmod2 import *
#или так:
from ...myFunc2.testmod2 import *
то ошибка: ValueError: Attempted relative import in non-package

все файлы __init__.py - пустые,
вроде все делал как 
тут написано, но безрезультатно.

Это сообщение отредактировал(а) zloyGamer - 13.6.2010, 23:57
PM MAIL   Вверх
scorpil
Дата 14.6.2010, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.5.2010

Репутация: нет
Всего: нет



Цитата

Обратите внимание, что относительное импортирование основано на имени текущего модуля. Поскольку имя главного модуля всегда „__main__“, модули, предназначенные для использования в качестве главных модулей приложения на Python, должны всегда использовать абсолютное импортирование (absolute imports).


Читать надо внимательно.
Но все же в Python 2.6 есть один способ. Если очень надо смотри PEP 366. Я не разбирался.
PM MAIL   Вверх
zloyGamer
Дата 14.6.2010, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 24.2.2008
Где: аватар какает

Репутация: нет
Всего: нет



нда..., scorpil вы открыли мне глаза ), 
тоесть получается в Python31 уже никак нельзя просто включить/импортнуть модуль из соседней папки?
это както дико, жестко ограничивает и подталкивает к написанию велосипедов/костылей, 
а может у кого завалялся/есть какой нить ручной вариант импорта?
PM MAIL   Вверх
scorpil
Дата 14.6.2010, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.5.2010

Репутация: нет
Всего: нет



Опять...
Цитата

модули, предназначенные для использования в качестве главных модулей приложения на Python, должны всегда использовать абсолютное импортирование (absolute imports).


Добавить модуль можно. Нельзя сделать это с помощью родственного импортирования, и только.

Было бы довольно смешно если бы в современный язык программирования непозволял сделать такую простую "махинацию".
Не советовал бы вам нарушать древовидную архитектуру программы, но если очень надо - перед импортом просто добавьте адрес нужной папки в переменную sys.path. Например:
Код

import sys
sys.path.append('../myFunc2')

import testmod2


Должно помочь.

Это сообщение отредактировал(а) scorpil - 14.6.2010, 17:58
PM MAIL   Вверх
zloyGamer
Дата 15.6.2010, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 24.2.2008
Где: аватар какает

Репутация: нет
Всего: нет



да, спс, я пока так и сделал
Код

import sys

from myFunc1.testmod1 import *

sys.path.insert(0, "..")
from myFunc2.testmod2 import * 
sys.path.pop(0)  #убираем за собой

но, это не вариант
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1048 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.