Python импорт не работает должным образом в WSL venv - PullRequest
0 голосов
/ 18 апреля 2020

Может ли кто-нибудь двусмысленно объяснить мне, что именно является "модулем" и что такое "каталог" в python, и меня смущают venv, wsl, оба или нет в этом случае?

Я пытаюсь импортировать метод с именем save_clusters в файл с именем driver.py из файла с именем save_clusters.py, в котором есть только этот одноименный метод. Структура папок выглядит следующим образом:

[venv:

/assets
/bin
/doc
/include
/lib
/main
   /clustering_scripts
       ...
       /save_clusters.py                     # a function from this ... "module"?
   /folder2
   /otherstuff
   /driver.py                                # needs to go here.

]

Мои чувства паука из javascript предполагают, что main как «модуль» должен предварять любой импорт, и мой vscode intellisense согласен со мной в этом (предлагает до from main.clustering_scripts.save_clusters import save_clusters). Однако, когда я делаю это и запускаю драйвер, я получаю следующую ошибку:

Traceback (most recent call last): "driver.py", line 8, in <module> 
from main.clustering_scripts.save_clusters import save_clusters  
             ModuleNotFoundError: No module named 'main'   

Что работает следующим образом (в driver.py) from clustering_scripts.save_clusters import save_clusters. Но и то, и другое кажется немного произвольным, и моя интеллигентность подчеркивает его желтыми загогулинами и не дает подсказок по методу, когда я пытаюсь его использовать. Тем не менее, во время выполнения все работает отлично.

Это какой-то ___init__.py, который я где-то не положил, или я пропускаю что-то от характера импорта в python ?? Я использую «удаленный» WSL-сервер и виртуальную среду для усложнения вещей (возможно).

Большое спасибо. enter image description here

...