Как сделать зависимости от Make-файла для кода Python

Обратите внимание на структуру вашей структуры.

type TestController struct {
   Account *AccountController
}

Учетная запись является указателем. Он инициализирован в nil, поэтому, если вы никогда не установите его, чтобы указывать на что-то, он всегда будет равен нулю, и вы получите ошибку разыменования нулевого указателя, когда попытаетесь вызвать для него метод, подобный этому

// c *TestController
c.Account.ActiveAccountID()

Как / когда вы устанавливаете, это зависит от вашего варианта использования.

Также, в зависимости от вашего варианта использования, вы можете изменить его с указателя на встроенную структуру

type TestController struct {
   Account AccountController
}

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

7
задан Gordon Wrigley 24 October 2008 в 01:09
поделиться

2 ответа

modulefinder может использоваться для получения графа зависимостей.

3
ответ дан 7 December 2019 в 14:39
поделиться

import операторы являются в значительной степени всеми зависимостями существует. Существуют, две соответствующих формы для операторов импорта:

import x, y, z
from x import a, b, c

Вам также будет нужно PYTHONPATH и sites информация, которая используется для создания sys.path. Это показывает физические местоположения модулей и пакетов.

Это довольно болезненно для обработки, так как необходимо сделать переходное закрытие всего импорта во всех модулях, которые Вы импортируете.

Как альтернативный подход, можно использовать -v опция получить полный список импорта и физических файлов. Это производит журнал, который можно отредактировать в плоский список зависимостей.

Например, когда я делаю

>>> import math

Я вижу это в журнале

dlopen("/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/math.so", 2);
import math # dynamically loaded from /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/math.so
1
ответ дан 7 December 2019 в 14:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: