Найти - Пользователи
Полная версия: Много легких вопросов по питону.
Начало » Центр помощи » Много легких вопросов по питону.
1 2 3 4
ReinRaus
1. Как сделать import модуля, который находится к примеру в c:/my_random_folder/
2. Как вызвать на исполнение другой скрипт ру и при этом сразу же завершить текущий. Это нужно для разных ОС, симбиан в частности. Ну типа скрипт делает обновление себя через интернет посредством вызова скрипта-апдетера и закрытия самого себя.
3. Как запустить код находящийся в другом файле в той же области видимости переменных. Бред какой-то написал. В общем ищу аналог include в php, если он есть конечно.
Александр Кошелев
ReinRaus
1. Как сделать import модуля, который находится к примеру в c:/my_random_folder/
добавить эту директорию в sys.path
ReinRaus
2. Как вызвать на исполнение другой скрипт ру и при этом сразу же завершить текущий. Это нужно для разных ОС, симбиан в частности. Ну типа скрипт делает обновление себя через интернет посредством вызова скрипта-апдетера и закрытия самого себя.
смотрите модуль subprocess
ReinRaus
3. Как запустить код находящийся в другом файле в той же области видимости переменных. Бред какой-то написал. В общем ищу аналог include в php, если он есть конечно.
include к счастью нет. Можно поиграться с import + globals()/locals() или execfile
ReinRaus
Daevaorn
добавить эту директорию в sys.path
муторно. и много директорий. Притом возможно вообще неизвестно какая директория, а определяется пользователем.
Daevaorn
смотрите модуль subprocess
не пойдет… слишком сложно… я думал есть простое решение, дело в том, что один и тот же скрипт должен работать на разных ОС, а подгружать из интернета недостающие для работы модули или включать их сразу в архив при распространении не целесообразно.
Daevaorn
include к счастью нет.
Когда код программы чрезмерно большой очень удобно выносить его часть в другой файл и потом вставлять при помощи include для улучшения читабельности. Связка “к счастью” не совсем корректна.
igor.kaist
Daevaorn
смотрите модуль subprocess
Этого модуля на симбиан нет, если топикстартеру именно это нужно, но там есть возможнотсь запускать демона (но только без ui).
А вообще, я посоветовал бы пересмотреть архитектуру приложения.
http://python.su/blog/public/2008/09/17/podderzhka-plaginov-v-programmah-na-python
ReinRaus
Скорее всего придется как раз таки и пересмотреть архитектуру. Изменить порядок: не основная программа вызывает обновление, а наоборот, сначала проверка обновления, потом старт основной программы.
igor.kaist
Ну так обновляй, складывай новую версию в папку и импортируй. “Вынос” кода, это как раз модули.
ReinRaus
муторно. и много директорий. Притом возможно вообще неизвестно какая директория, а определяется пользователем.
Зачем муторно? Делаешь пакет модулей в одной папке. И в sys.path добавляешь всего одну папку, в которая может опраделяться пользователем тоже…
Пример: два модуля test1.py и test2.py. Создай папку my,содержащую твои модули, и (пустой) файл __init__.py , sys.path.append('c:/folder'). И далее импортируй спокойно import my.test1 import my.test2
Ничего сложного на практике
Viper
ReinRaus
2. Как вызвать на исполнение другой скрипт ру и при этом сразу же завершить текущий. Это нужно для разных ОС, симбиан в частности. Ну типа скрипт делает обновление себя через интернет посредством вызова скрипта-апдетера и закрытия самого себя.
os.exec* - загружает другой процес вместо текущего, насколько я понял то что тебе надо.
ZAN
ReinRaus
3. Как запустить код находящийся в другом файле в той же области видимости переменных. Бред какой-то написал. В общем ищу аналог include в php, если он есть конечно.
from module import *
Это не абсолютный аналог, но очень близко. Отличие - модуль вставляется не как текст, но выполняется в области видимости модуля, в котором вызывается импорт. Обратите внимание, что именно на уровне модуля, а не любой области видимости, где вызывается импорт. В принципе, такой код также будет работать:
def fun():
from module import *
Но интерпретатор при этом ругнется - “SyntaxWarning: import * only allowed at module level”
ZAN
Совсем забыл добавить - такая директива не спасет человечество (тем более, что модуль все-равно должен лежать в path) и использовать ее совсем не рекомендуется. Импортировать модуль, зная путь, можно используя imp. Но по-хорошему нужно для начала курить http://www.python.org/dev/peps/pep-0302/
Еще неплохо ознакомится с модулем runpy.
Rodegast
>муторно. и много директорий. Притом возможно вообще неизвестно какая директория, а определяется пользователем.

__import__(путь_к_модулю)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB