Python не могу найти модуль - PullRequest
0 голосов
/ 07 июня 2018

Моя файловая структура:

-launch.py
---folder
-----folder
-------__init__py
-------test.py
-------test1.py

launch.py ​​

os.system('python3.6 -m folder.folder.test')

test.py

import test1

test1.py

def test_print():
    print("Testing testing 123")

Я получаю ошибку: модуль не найден, потому что по какой-то причине python ищет модули в каталоге, в котором находится launch.py. Я могу успешно импортировать его в test.py, используя import folder.folder.test1 Я бы просто использовалэто, но программа, которую я изменяю, уже имеет слишком много импортов, используя import test1 (так как в Windows она работает нормально).Спасибо заранее.

1 Ответ

0 голосов
/ 07 июня 2018

import test1 ищет модуль верхнего уровня .Вы не можете импортировать модуль внутри одного и того же пакета без явного указания Python на просмотр этого пакета.

Используйте

from . import test1

или

from folder.folder import test1

import test1работает только в том случае, если каталог folder/folder/ присутствует в пути поиска модуля Python.Любой код, который полагается на работу import test1, будет делать это только в том случае, если он был запущен непосредственно с .../folder/folder в качестве текущего рабочего каталога, или когда вы явно добавили этот каталог в sys.path (либо путем обновления этого списка из кода Python,или установив переменную окружения PYTHONPATH).

Например, из модуля folder.folder.test можно использовать:

import sys, os
HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, HERE)

перед использованием import test1. Я рекомендую против этого ;вместо этого исправьте проект для корректной работы с упакованным пространством имен.

...