Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: программирование на Python, написание модулей  (Прочитано 3547 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Питон III

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
  • Ку-ку
    • Просмотр профиля
написал модуль на Python3.1, ядро Linux, дистр Ubuntu 10.04, куда сохранить модуль, чтобы он хранился отдельно от официальной версии Python и находился при этом в пути поиска PYTHONPATH- чтобы я мог его импортировать. Пробывал поместить его по пути usr/local/lib/python3.1/site-packages -не достаточно прав, по пути .local/lib/python3.1/site-packages - не импортируется. Помогите кто знает! на Windows проблем нет  8)
Где полно ошибок? У нас в коде!

Оффлайн cocucka

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #1 : 29 Августа 2010, 13:10:35 »
Симлинк сделай. sudo ln -s /home/user/module.py /usr/local/lib/path/to/python

Оффлайн arrecck

  • Старожил
  • *
  • Сообщений: 1725
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #2 : 29 Августа 2010, 18:56:34 »
в общем виде, кладем модуль /usr/local или /opt или куда угодно
прописываем env path, должен цеплять

Оффлайн blindvic

  • Участник
  • *
  • Сообщений: 179
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #3 : 29 Августа 2010, 20:34:27 »
куда сохранить модуль, чтобы он хранился отдельно от официальной версии Python и находился при этом в пути поиска PYTHONPATH- чтобы я мог его импортировать.
подправить PYTHONPATH?
http://stackoverflow.com/questions/859594/cant-find-my-pythonpath

Оффлайн alebo

  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #4 : 29 Августа 2010, 21:00:24 »
Приведите, пожалуйста, примеры импортирования - очень интересная тема.
« Последнее редактирование: 29 Августа 2010, 21:08:12 от alebo »

Оффлайн Питон III

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
  • Ку-ку
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #5 : 29 Августа 2010, 21:15:30 »
что тут приводить
import TextUtil
Где полно ошибок? У нас в коде!

Оффлайн alebo

  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #6 : 29 Августа 2010, 21:18:04 »
я прошу написать не строчку с неба, а осмысленный код!

Оффлайн Питон III

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
  • Ку-ку
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #7 : 29 Августа 2010, 21:18:46 »
в общем виде, кладем модуль /usr/local или /opt или куда угодно
прописываем env path, должен цеплять
то есть в программе в строке шелл пишем:

#!/usr/bin/env path

я правильно понял?

Пользователь решил продолжить мысль 29 Августа 2010, 21:20:33:
я прошу написать не строчку с неба, а осмысленный код!
тебе нужен пример модуля?
« Последнее редактирование: 29 Августа 2010, 21:20:33 от Питон III »
Где полно ошибок? У нас в коде!

Оффлайн alebo

  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #8 : 29 Августа 2010, 21:24:04 »


Да

Оффлайн Питон III

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
  • Ку-ку
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #9 : 29 Августа 2010, 21:28:59 »
подправить PYTHONPATH?
http://stackoverflow.com/questions/859594/cant-find-my-pythonpath
тут все на буржуйском

Пользователь решил продолжить мысль 29 Августа 2010, 21:34:31:

#!/usr/bin/env python3
# Copyright (c) 2008 Qtrac Ltd. All rights reserved.
# This program or module is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. It is provided for educational
# purposes and is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.

"""
This module provides a few string manipulation functions.

>>> is_balanced("(Python (is (not (lisp))))")
True
>>> shorten("The Crossing", 10)
'The Cro...'
>>> simplify(" some    text    with  spurious  whitespace  ")
'some text with spurious whitespace'
"""

import string


def is_balanced(text, brackets="()[]{}<>"):
    """Returns True if all the brackets in the text are balanced

    Only works where both bracket characters are different.

    >>> is_balanced("no brackets at all")
    True
    >>> is_balanced("<b>bold</b>")
    True
    >>> is_balanced("[<b>(some {thing}) goes</b>]")
    True
    >>> is_balanced("<b>[not (where {it}) is}]</b>")
    False
    >>> is_balanced("(not (<tag>(like) (anything)</tag>)")
    False
    """
    counts = {}
    left_for_right = {}
    for left, right in zip(brackets[::2], brackets[1::2]):
        assert left != right, "the bracket characters must differ"
        counts
= 0
        left_for_right
= left
    for c in text:
        if c in counts:
            counts[c] += 1
        elif c in left_for_right:
            left = left_for_right[c]
            if counts
== 0:
                return False
            counts
-= 1
    return not any(counts.values())


def shorten(text, length=25, indicator="..."):
    """Returns text or a truncated copy with the indicator added

    text is any string; length is the maximum length of the returned
    string (including any indicator); indicator is the string added at
    the end to indicate that the text has been shortened

    >>> shorten("The Road")
    'The Road'
    >>> shorten("No Country for Old Men", 20)
    'No Country for Ol...'
    >>> shorten("Cities of the Plain", 15, "*")
    'Cities of the *'
    """
    if len(text) > length:
        text = text[:length - len(indicator)] + indicator
    return text


def simplify(text, whitespace=string.whitespace, delete=""):
    r"""Returns the text with multiple spaces reduced to single spaces

    The whitespace parameter is a string of characters, each of which
    is considered to be a space.
    If delete is not empty it should be a string, in which case any
    characters in the delete string are excluded from the resultant
    string.

    >>> simplify(" this    and\n that\t too")
    'this and that too'
    >>> simplify("  Washington   D.C.\n")
    'Washington D.C.'
    >>> simplify("  Washington   D.C.\n", delete=",;:.")
    'Washington DC'
    >>> simplify(" disemvoweled ", delete="aeiou")
    'dsmvwld'
    """
    result = []
    word = ""
    for char in text:
        if char in delete:
            continue
        elif char in whitespace:
            if word:
                result.append(word)
                word = ""
        else:
            word += char
    if word:
        result.append(word)
    return " ".join(result)


if __name__ == "__main__":
    import doctest
    doctest.testmod()


сохраняешь этот текст в файл TextUtil.py
потом в нужной программе либо в интерпритаторе импортируешь командой

import TextUtil

предупреждаю: я питоню на Третьей версии
« Последнее редактирование: 29 Августа 2010, 21:34:31 от Питон III »
Где полно ошибок? У нас в коде!

Оффлайн alebo

  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #10 : 29 Августа 2010, 21:35:01 »
Я вместо импорта пользуюсь другим методом, правда не удобно, но работает - сохранять значение импортируемой переменной в файл, потом считывать. :)

Оффлайн Питон III

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
  • Ку-ку
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #11 : 29 Августа 2010, 21:36:44 »
и еще файл TextUtil.py -наш модуль нужно сохранить в папке находящейся в пути поиска PYTHONPATH. об этом собственно и тема

Пользователь решил продолжить мысль 29 Августа 2010, 21:39:28:
Я вместо импорта пользуюсь другим методом, правда не удобно, но работает - сохранять значение импортируемой переменной в файл, потом считывать. :)

Это ты как считываешь?? О_о
так что ли:

в командной строке-

proga.py<file.txt

???

Пользователь решил продолжить мысль 29 Августа 2010, 21:45:22:
в общем виде, кладем модуль /usr/local или /opt или куда угодно
прописываем env path, должен цеплять

у меня не получается положить куда угодно, прав не достточно
« Последнее редактирование: 29 Августа 2010, 21:45:22 от Питон III »
Где полно ошибок? У нас в коде!

Оффлайн alebo

  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #12 : 29 Августа 2010, 21:48:37 »

Это ты как считываешь?? О_о
так что ли:

в командной строке-

proga.py<file.txt

???

for line in open(file):
   line

Спасибо за код.

Пользователь решил продолжить мысль 29 Августа 2010, 21:51:30:

Это ты как считываешь?? О_о
так что ли:

в командной строке-

proga.py<file.txt

???

В самом модуле программы прописываю:

for line in open(file):
   line

Версия Python 2.6

Спасибо за код.
« Последнее редактирование: 29 Августа 2010, 21:52:20 от alebo »

Оффлайн Питон III

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
  • Ку-ку
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #13 : 29 Августа 2010, 21:55:27 »
Спасибо за код.

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

я в питоне не спец, но скажу наверное правду: твой способ - это не импортирование, а извращение какое то!

ты на какой версии питонишь??

Пользователь решил продолжить мысль 29 Августа 2010, 21:59:49:
Цитата: Питон III
Спасибо за код

давай я тебе лучше Книгу по Третьему Питону Вышлю?? там все логично, понятно и плюс есть файлы с примерамми, такими как я тебе недавно выслал?

Будем вместе на третьем питонить )))
« Последнее редактирование: 29 Августа 2010, 21:59:49 от Питон III »
Где полно ошибок? У нас в коде!

Оффлайн blindvic

  • Участник
  • *
  • Сообщений: 179
    • Просмотр профиля
Re: программирование на Python, написание модулей
« Ответ #14 : 29 Августа 2010, 23:02:33 »
перед тем как импортировать модуль, пиши в самом скрипте: import sys
sys.path.append('/path/to/module/')

или перед запуском скрипта, укажи системе: $ export PYTHONPATH=/to/my/python/moduleВ этом случае путь указанный в PYTHONPATH добавляется к sys.path по умолчанию

Пользователь решил продолжить мысль 29 Августа 2010, 23:04:24:
код какой то кривой тут выглядит, могу в файле по почте прислать
используй тэг КОД вместо тэга ЦИТАТА
« Последнее редактирование: 29 Августа 2010, 23:04:24 от blindvic »

 

Страница сгенерирована за 0.029 секунд. Запросов: 25.