Как заставить функцию Python 'видеть импортированные библиотеки - PullRequest
0 голосов
/ 15 октября 2019

Как сделать импортированную самописную функцию для просмотра библиотек, которые находятся в главном файле?

У меня есть основной файл, написанный в блокноте Юпитера, в корневом каталоге с кодом. Этот файл содержит много библиотек, в том числе Numpy и др.

Наряду с внешними библиотеками я импортирую в свой файл самописную библиотеку с функциями: import functions_lib. Самописная библиотека также находится в главном корне.

Но импортированные функции (например, functions_lib.xgb_plot_k_fold_roc_curve (X_train, y_train, nfold, seed) не видят библиотеки, импортированные из основного файла (например,Numpy).

#main file:
import pandas as pd
import numpy as np
import functions_lib

functions_lib.xgb_plot_k_fold_roc_curve(X_train, y_train, nfold, seed)

# improterd library code
def xgb_plot_k_fold_roc_curve(X_train, y_train, nfold, seed):
    ...
    mean_tpr = np.mean(tprs, axis=0)
    ...


NameError                                 Traceback (most recent call last)
<ipython-input-15-1a9972b490ae> in <module>
      2 
      3 
----> 4 functions_lib.xgb_plot_k_fold_roc_curve(X_train, y_train, nfold, seed)

C:\projects\Python-model\functions_lib.py in xgb_plot_k_fold_roc_curve(X_train, y_train, nfold, seed)
     39     tprs = []
     40     aucs = []
---> 41     mean_fpr = np.linspace(0, 1, 100)
     42     plt.figure(figsize=(10,10))
     43     i = 0

NameError: name 'np' is not defined

1 Ответ

2 голосов
/ 15 октября 2019

Полезно понимать переменные и их область действия . Рассмотрим np как переменную. Вы можете использовать его только в том модуле, где он был определен на уровне модуля. Если вы загружаете модуль внутри функции как:

def func():
    import numpy as np
    pass

, вы не можете использовать np вне функции, так как это локальная переменная.

Это не похоже на директиву препроцессора #include в C / C ++. Таким образом вставьте import numpy as np в каждый модуль, где вы его используете.

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