Вам просто не понравится это.
import analyse
сделает только 1004 * в вашем глобальном пространстве имен. В лучшем случае вы можете сделать:
from analyse import vix
, чтобы поместить vix в глобалы.
(или использовать звездное обозначение)
Бонус: если вы не хотите нужно проанализировать установленный (даже если с venv рекомендуется установить приложение / модуль внутри venv), чтобы импортировать vix
внутри __init__.py
, вы также можете сделать относительный импорт внутри:
from . import vix
https://docs.python.org/3/reference/import.html
[ПРАВИТЬ] Некоторые примеры:
Файловая система:
analyse
├─ __init__.py
├─ vix.py
├─ viz.py # another submodule to demonstrate some other points
└─ vit.py # yet another submodule to demonstrate some other points
analyse/__init__.py
содержит :
import .vit as vit
# from . import vit # works too
vix = 42
viy = 43
analyse/vix.py
содержит:
def draw_vix():
print('Hello from drax_vix')
analyse/viz.py
содержит:
def draw_viz():
print('Hello from drax_viz')
analyse/vit.py
содержит:
def draw_vit():
print('Hello from drax_vit')
Если ваш пакет установлен (например, вы создали файл setup.py и сделали pip install analyse
) или дочерний элемент каталога, указанного в переменной env PYTHONPATH, в любом сценарии (или интерпретаторе python) снаружи пакет, эти вещи происходят:
1) полный импорт с псевдонимом:
import analyse.vix as vix
vix.draw_vix()
# works, and print print('Hello from drax_vix')
analyse
# Error : analyse not defined since you import only symbols from analyse.vix, not the modules themselves
analyse.vix
# Same as previous one
2) полный импорт
import analyse.vix
analyse.vix.draw_vix()
#Works because python guarantees analyse.vix to be a valid expression
analyse
# analyse module
vix.draw_vix()
# Error : vix undefined. import analyse.vix guarantee analyse.vix to be a valid module, but does not add submodule to global namespace
analyse.vix
# is a module, analyse.vix module has been imported too and set as an attribute of analyse.
analyse.viz
# Error : analyse has no attr viz since viz is a non-imported submodule.
analyse.vit.draw_vit
# Works because analyse is indirectly imported with import analyse.vix, and vit is imported as vit inside analyse/__init__.py and thus an attribute of the module.
3) импорт только анализ
import analyse
analyse.vix
# 42 because analyse.vix module is not imported, thus you saw the variable defined vix inside analyse
vix.draw_vix()
# Error : vix undefined, obviously, you never defined it nor imported it
vit.draw_vit()
# Works because vit is imported in __init__.py and set as an attribute of analyse.
4) Из анализа импо rt vix, viy, viz, vit
from analyse import vix, viz, vit
analyse.vix
# Error : analyse not define since you imported only symbols
vix
# 42 Because you didn't import analyse.vix and there is a variable vix defined in analyse/__init__.py
viy
# 43
viz
# module viz : viz is not declared as an attribute of analyse, but it falls back to the existing analyse.viz module
vit
# module vit : The one imported inside __init__.py (that is the same as analyse.vit)
5) из анализа импорта viy
from analyse import viy
# Error : analyse/viy.py does not exist