Преобразуйте папку python в пакет: `ModuleNotFoundError` - PullRequest
0 голосов
/ 14 января 2020

Предположим, что в папке my_package у меня есть три файла:

  • __init__.py, blanck
  • file1.py, содержащий функцию function1
  • file2.py, содержащий оператор импорта: from file1 import function1

Затем, из другого каталога, когда я использую import my_package.file2 as file2, у меня есть ModuleNotFoundError, приходящий из строки оператора from file1 import function1.

Очевидно, я где-то что-то сделал не так. Но где ? MWE, который я дал, небольшой, но я добавляю, что в папке my_package много python файлов, некоторые из них импортируют друг друга. Я пытаюсь преобразовать этот каталог в пакет, который я могу импортировать из другого места, поэтому я добавил файл __init__.py blanck, но, похоже, он не работает таким образом.

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Полагаю, я сам нашел решение: я добавил в папку файл setup.py с содержимым пропппера, а затем запустил pip -m my_package, что позволило мне импортировать его из любого места ..

0 голосов
/ 14 января 2020

Проверьте эту древовидную структуру.

my_package
  |
  '-----  __init__.py
  '----- file1.py
  '----- file2.py

Script   (somewhere in your system)
  |
  '--- test.py

, когда вы импортируете my_package (импортируйте my_package.file2 как file2) в другой каталог, например, в test.py, он ищет каталог с именем my_package в своем текущем пути .. (т.е. внутри папки Script)

, поскольку my_package отсутствует в папке Script, вы получите ошибку ModuleNotFoundError.

, поэтому в test.py напишите код, как показано ниже

import sys

sys.path.append("/home/MyFiles/my_package")  # absolute path of the my_package folder

import file2

# Now use file2 and work on it

# all other modules/files in my_package folder can also be  imported.
...