откуда берется __path__ - PullRequest
       2

откуда берется __path__

2 голосов
/ 05 января 2010

Я не могу найти, кто определил '__path__', почему '__path__' можно использовать.

import os
import sys
import warnings 
import ConfigParser # ConfigParser is not a virtualenv module, so we can use it to find the stdlib

dirname = os.path.dirname

distutils_path = os.path.join(os.path.dirname(ConfigParser.__file__), 'distutils')
if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)):
    warnings.warn(
        "The virtualenv distutils package at %s appears to be in the same location as the system distutils?")
else:
    __path__.insert(0, distutils_path)#who defined me.???
    exec open(os.path.join(distutils_path, '__init__.py')).read()

Ответы [ 2 ]

8 голосов
/ 05 января 2010

Вам действительно нужно прочитать некоторую документацию по Python и изучить основы языка.

Я проверил, и вы, кажется, говорите по-китайски. Вот ресурсы документации Python на китайском языке:

http://www6.uniovi.es/python/doc/NonEnglish.html#chinese

Теперь, чтобы ответить на ваш вопрос. Я не был уверен, каков был ответ, поэтому я использовал Google. Я сделал поиск в Google по запросу "Python __path__" и очень быстро нашел:

http://docs.python.org/tutorial/modules.html

6.4.3. Пакеты в нескольких каталогах

Пакеты поддерживают еще один специальный атрибут __path__. Это инициализируется как список, содержащий название каталога, содержащего __init__.py пакета перед кодом в этом файле выполняется. это переменная может быть изменена; делать это влияет на будущие поиски модулей и подпакеты, содержащиеся в пакет.

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

3 голосов
/ 05 января 2010

Я нашел следующее описание переменной __path__:

Инициализируется списком из одного элемент, содержащий имя каталога пакет (подкаталог каталог на sys.path). изменения __path__ изменяет список каталогов, в которых выполняется поиск субмодули пакета.

здесь: http://www.python.org/doc/essays/packages.html

На этой странице обсуждается «встроенная поддержка пакетов» в Python 1.5, но она все еще может применяться.

Я не могу вам больше сказать, потому что я не использую Python. Я нашел эту ссылку с помощью поиска Google.

РЕДАКТИРОВАТЬ: Да! Я собирался напомнить вам о том, что мы обсуждали вчера , но хорошим началом будет чтение документации Steveha по китайскому Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...