Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Как узнать где запускается скрипт


Автор: kulibinka 23.2.2008, 12:21
Очень часто приходится делать скрипты, которые будут запускаться на сервере.
А писать их нужно на локальном компьютере, причем желательно иметь возможность их тут же и тестить. 

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

Для пхп способ понятен: 
if ($_SERVER['REMOTE_ADDR']=='127.0.0.1') - значит локально запустился.

А каким способом в python можно определить где запускается скрипт?
Причем если даже на сервере, то как именно запускается - через браузер или из консоли?

Автор: Daevaorn 23.2.2008, 12:26
Для таких ситуаций используют файлы конфигураций, из которых скрипт достает нужные параметры. Эти файлы отличаются для различного окружения.
Цитата(kulibinka @  23.2.2008,  13:21 Найти цитируемый пост)
А каким способом в python можно определить где запускается скрипт?
Причем если даже на сервере, то как именно запускается - через браузер или из консоли? 

Какой скрипт? Каком сервере?

Автор: kulibinka 23.2.2008, 12:42
Ну вот есть у меня в скрипте место
db = MySQLdb.connect(host="localhost", user="root", passwd="", db="bmd")

Это настройки локального подключения к базе.
А на сервере, где скрипт работает, настройки к базе другие.

И хочется найти чему равны в питоне условия
if (НА_СЕРВЕРЕ_ЧЕРЕЗ_БРАУЗЕР)
elif (НА_СЕРВЕРЕ_ЧЕРЕЗ_КОНСОЛЬ)
elif (ЛОКАЛЬНО_ЧЕРЕЗ_БРАУЗЕР)
elif (ЛОКАЛЬНО_ЧЕРЕЗ_КОНСОЛЬ)

Т.е. в пхп например $_SERVER['REMOTE_ADDR']=='127.0.0.1' это ЛОКАЛЬНО_ЧЕРЕЗ_БРАУЗЕР.
Должны же быть аналогичные переменные в питоне?

Автор: turist 24.2.2008, 00:47
Цитата(kulibinka @ 23.2.2008,  12:42)
Т.е. в пхп например $_SERVER['REMOTE_ADDR']=='127.0.0.1' это ЛОКАЛЬНО_ЧЕРЕЗ_БРАУЗЕР.
Должны же быть аналогичные переменные в питоне?

Вам уже товарищ выше написал. В каком питоне, на каком сервере?? Питон - это язык, это не CGI-сервер и т.п. Поточнее определите среду, в которой работаете

Автор: kulibinka 24.2.2008, 09:18
Ух ты... Т.е. у него в зависимости от среды переменные среды не меняются, а появляются-пропадают?

python24/python24
winxp/freebsd

Автор: Daevaorn 24.2.2008, 10:33
Цитата(kulibinka @  24.2.2008,  10:18 Найти цитируемый пост)
Ух ты... Т.е. у него в зависимости от среды переменные среды не меняются, а появляются-пропадают?

python24/python24
winxp/freebsd 

Почитал бы хоть книгу какую-нибудь по питону, сразу бы понял чем он отличается от php и почему паттерны оттуда не переносятся в питон. 
Ах да, и что такое переменные среды, я бы тоже тебе советовал узнать поконкретнее, а то не к месту употребляешь.

Автор: kulibinka 24.2.2008, 13:21
Что ж так все замусолили...
Да дайте просто ответ - есть ли это в питоне или нет. И если есть - покажите пожалуйста хоть один пример. 

Не верю что он больше строчки займет. А если так, то зачем эту всю воду в теме о "почитай" разводить - ведь неконструктивно совсем?
И посылать книги читать вместо того чтобы одну одну строчку показать аналогично просто "посылать". Зачем?


А если намного больше - то так и скажите, что в питоне этого нет, или сложно делается.

Автор: Andity 24.2.2008, 13:42
kulibinka, 
попробуй определять ОС, под которой стартует скрипт:
Код

import os
os.name # самое элементарное


так же посомотри 
Код

help(platform)


если это имелось ввиду  smile 

Автор: Daevaorn 24.2.2008, 14:00
Цитата(kulibinka @  24.2.2008,  14:21 Найти цитируемый пост)
Да дайте просто ответ - есть ли это в питоне или нет. И если есть - покажите пожалуйста хоть один пример. 

Тебя попросили сказать какой сервер(и как к нему подключен питон) - ты не ответил, а без этого невозможно указать как получить информацию.
Цитата(kulibinka @  24.2.2008,  14:21 Найти цитируемый пост)
Не верю что он больше строчки займет. А если так, то зачем эту всю воду в теме о "почитай" разводить - ведь неконструктивно совсем?

Верю, не верю тут роли не играет. Хорошо заданные вопрос - пол ответа. А почитать реально нужно, а то не понимаешь базовых принципов.
Цитата(kulibinka @  24.2.2008,  14:21 Найти цитируемый пост)
И посылать книги читать вместо того чтобы одну одну строчку показать аналогично просто "посылать". Зачем?

Затем, что думать надо самому и пытаться найти ответ не на форуме, а в первую очередь в книгах и гугле.

Автор: kulibinka 24.2.2008, 19:04
Andity, спасибо, то что надо smile
Вот все что уже поможет отличить запуск скрипта на сервере от запуска на своей виндовской машине:

            винда против сервера
print os.altsep        # / против None
print os.defpath        #C:\bin против :/bin:/usr/bin
print os.name        # nt против posix
print os.pardir        #.. против ..


Цитата
Тебя попросили сказать какой сервер(и как к нему подключен питон) - ты не ответил, а без этого невозможно указать как получить информацию.


Ну как же - оказалось через os.name очень даже возможно.

Автор: Daevaorn 25.2.2008, 18:09
Цитата(kulibinka @  24.2.2008,  20:04 Найти цитируемый пост)
Ну как же - оказалось через os.name очень даже возможно.

Что узнать, IP адрес? из браузера или консоли? Или имя системы, по которому НЕ определяется всё что было в вопросе?
Определись уж что надо.
Ох уж эти л....

Автор: kulibinka 26.2.2008, 13:19
Цитата

Ох уж эти л.... 


Рыбак рыбака smile
Спасибо, вопрос решен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)