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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Включение файлов 
V
    Опции темы
Torsten
Дата 11.11.2011, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как включить один файл python в другой ?
Вот у меня есть некоторые функции общего назначения, я их вынес в отдельный файл Y.py, расположил его в определенном каталоге X.
Что мне нужно написать в другом файле Z.py, чтобы при выполнении он нашел файл Y.py в каталоге X и смог бы выполнить функции описанные в нем ?


--------------------
We have no begining, we have no end. We are infinite.
PM MAIL   Вверх
pythonwin
Дата 11.11.2011, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

from X import Y

Y.my_func()


Torsten, прочитайте, пожалуйста, книгу Язык программирования Python
PM WWW GTalk Jabber   Вверх
Torsten
Дата 11.11.2011, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Это я посмотрел 1ым делом, ответа на свой вопрос не нашел.
Ваш пример у меня не заработал.
Код

python Z.py 
Traceback (most recent call last):
  File "Z.py", line 1, in <module>
    from X import Y
ImportError: No module named X


Прилагаю маленький пример, иллюстрирующий проблему (test.tar).


Это сообщение отредактировал(а) Torsten - 11.11.2011, 16:00

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  test.tar 10,00 Kb
--------------------
We have no begining, we have no end. We are infinite.
PM MAIL   Вверх
cutwater
Дата 11.11.2011, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Torsten, Почитайте же документацию.
X в данном случае просто каталог, чтобы он стал пакетом и можно было из него импортировать другие модули,
необходимо в каталоге X создать файл __init__.py

А вообще стыдно должно быть товарищи, народ совсем обленился, учебники читать разучился.
http://docs.python.org/tutorial/modules.html
Вот там все что нужно.

http://docs.python.org/tutorial/index.html
Прочитать от корки до корки.

Это сообщение отредактировал(а) cutwater - 11.11.2011, 21:35


--------------------
user posted image
PM MAIL   Вверх
Torsten
Дата 14.11.2011, 11:14 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А правильный ответ такой, надо добавлять в путь поиска текущий каталог.

Код

import sys
sys.path.append('./X')
import Y
Y.testY()

--------------------
We have no begining, we have no end. We are infinite.
PM MAIL   Вверх
cutwater
Дата 14.11.2011, 19:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Torsten @  14.11.2011,  10:14 Найти цитируемый пост)
А правильный ответ такой, надо добавлять в путь поиска текущий каталог.


Это неправильный ответ. Тем более он не соответствует тому, что Вы описали ранее.

import Y

и

from X import Y

отличаются, Вы не находите?

Более того, ситуация когда необходимо в коде править sys.path крайне редка и обычно ее вообще не должно быть кроме тех случаев, когда вы точно знаете зачем Вы это делаете.

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

Это сообщение отредактировал(а) cutwater - 14.11.2011, 19:21


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


 




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


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

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