Python модуль импорта по всему миру - PullRequest
0 голосов
/ 31 марта 2020

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

  • Мой проект: main.py
  • Мой проект / sr c: data.py

В основной программе я импортирую pandas, а также data.py.

В data.py Я также использую pandas, но я есть сообщение об ошибке, потому что модуль pandas не найден. Мне нужно интегрировать в data.py : import pandas as pd, чтобы использовать его.

Итак, мой вопрос прост: как я могу сделать всего один вызов pandas (в main.py ), чтобы получить к нему доступ во всем моем проекте?

1 Ответ

0 голосов
/ 31 марта 2020

Это невозможно, но вы можете сделать следующее:

Внутри src / data.py , иметь любые данные, которые вы хотите использовать, например, с pandas :

data = {'a':[1,2,3,4], 'b':[5,6,7,8]}

, а затем в вашем main.py :

import pandas as pd
from src.data import *

print(pd.DataFrame(data))

, который выдает следующий вывод:

   a  b
0  1  5
1  2  6
2  3  7
3  4  8

EDIT:

Если вы действительно не хотите снова импортировать pandas в data.py , но обязательно должны использовать его функциональность в этом файле, вы можете сделать следующее:

main.py:

import pandas as pd
from src.data import *

dl = DataLoader(pd, 'src/dict.json')
print(dl.get_data())

src / data.py:

class DataLoader:
  def __init__(self, pd, _file):
    self.file = _file
    self.pd   = pd

  def get_data(self):
    return self.pd.read_json(self.file)

src / dict. json:

{"A":[1,2,3], "B":[4,5,6], "C":[7,8,9]}

здесь вы передаете pandas классу DataLoader в файле data.py и, таким образом, используете его функциональность в data.py файл без импорта его в этот файл в соответствии с запросом.

Для полноты код, который я предлагаю, дает следующий вывод:

   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...