У меня возникла проблема с использованием «модуля импорта» вместо синтаксиса «из модуля импорта ...». Это ясно показывает, что моего понимания загрузки модулей недостаточно. Насколько я нахожу в другом месте, это различие в основном связано со стилем, но это не объясняет следующую ситуацию.
Я установил ase, используя
sudo apt install python3-ase
Я попробовал следующее:
import ase
ase.io.read
который выводит
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ase' has no attribute 'io'
Однако, при попытке
from ase.io import read
read
или - также возможно -
from ase.io import read
import ase
ase.io.read
Я получаю вывод
<function read at 0x7f33dc721730>
Последнее является желаемым результатом, так как я хочу использовать функцию ase.io.read для чтения файла .cif.
Подробнее о происхождении проблемы показано в следующий python сеанс:
import sys
import ase
sys.modules['ase']
модуль 'ase' из /home/vanbeverj/Programs/anaconda3/envs/abienv/lib/python3.6/site-packages/ase/ init .py '
dir(ase)
[' Atom ',' Atoms ',' LooseVersion ',' all ',' встроенные ', ' cached ', ' do c', ' file ', ' loader ', ' name ',' пакет ',' путь ',' spe c ',' версия ',' ase ', 'атом', ' атомов, калькуляторы, ячейка, ограничения, данные, dft, формула, геометрия, np, параллель, символы, sys, транспорт , 'units', 'utils']
from ase.io import read
dir(ase)
['Atom', 'Atoms', 'LooseVersion', ' all ', ' встроенные ' , ' кэшировано ', ' do c', ' file ', ' loader ', ' name ',' package ',' path ',' spe c ',' version ',' ase ' , «атом», «атомы», «калькуляторы», «ячейка», «ограничения», «данные», «dft», «формула», «геометрия», «io», «np», «параллель», « символы ',' sys ',' transport ',' units ',' utils ']
Команды' dir (ase) 'имеют явно разные выходы. Что происходит, например, с субмодулем io? Может кто-нибудь объяснить мне, что происходит под капотом?