Python: Импорт базовых пакетов внутри пакетов

#python

Вопрос:

Я сделал пакет, который должен импортировать другие пакеты, такие как pandas и numpy. Вот основная структура dir:

 main.py

my_pkg/
    __init__.py
    test.py
  
 

test.py содержит что-то вроде этого (я ничего не импортирую)

 def function():
    foo=pd.read_csv(....)
 

Я пытался сделать это в main.py:

 import pandas as pd
import numpy as np
from my_pkg import test

test.function()
 

Но я получаю эту ошибку:

 NameError: name 'pd' is not defined
 

Как мне импортировать панд и numpy, чтобы test.function() их можно было использовать?

Комментарии:

1. Вы пробовали импортировать эти модули в модуль, который их использует, т. е. test.py ?

2. main.py не использует панд или numpy, поэтому эти импортные данные бесполезны.

Ответ №1:

Поскольку вы импортируете панд в main.py это выходит за рамки функции function .

Вы должны импортировать панд в test.py сам по себе, чтобы функция могла его использовать.

Ответ №2:

  • Рекомендуется импортировать соответствующие библиотеки/пакеты в файл, в котором они в основном используются.[ но from my_pkg.test import function добавляет function в область текущей переменной.]
  • Определите все библиотеки/пакеты, необходимые для запуска ваших библиотек, в setup.py файле под install_requires ключом. Не включайте библиотеки/пакеты, специально используемые для тестирования и сборки.