Python: импорт пакета в другой пакет без использования полного пути - PullRequest
0 голосов
/ 24 января 2020

У меня есть код, который я не могу правильно импортировать [в Linux]:

Файлы (каждый файл python содержит только класс с таким же именем и заглавными буквами):

commandreader/
|-- CommandReader.py
|-- y/
    |-- Switch.py
    |-- Option.py
    |-- __init__.py
    |-- x/
        |-- InputArg.py
        |-- __init__.py

Импорт CommandReader.py:

from y import Switch
from y import Option

y / Импорт Switch.py ​​и y / Option.py:

from x import InputArg

y / __ init__.py:

from .import x
from .Switch import Switch
from .Option import Option

y / x / __ init__.py:

from .InputArg import InputArg

Ошибка:

$ python3 ./CommandReader.py
Traceback (most recent call last):
  File "CommandReader.py", line 12, in <module>
    from y import Switch
  File "/home/swatts/code/commandreader/y/__init__.py", line 2, in <module>
    from .Switch import Switch
  File "/home/swatts/code/commandreader/y/Switch.py", line 8, in <module>
    from x import InputArg
ModuleNotFoundError: No module named 'x'

Редактировать: Наряду с моей ошибкой, я неправильно понимаю, как Python хочет пакеты работать? Потому что у меня такое впечатление.

1 Ответ

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

Одним из решений является то, что вы можете добавить путь к модулю в переменных среды:

Добавить путь в Path, который находится в Environmental Variable

Если вы используете Windows

  1. Щелкните правой кнопкой мыши по My Computer и go до Properties
  2. Выберите Advanced system settings
  3. Go до Tab Advanced
  4. Нажмите на Environment Variables
  5. В System Variables Разделе Поиск по Path Переменная
  6. Дважды щелкните по нему и добавьте путь в список его value поля.

Вы также можете сделать с помощью кода:

import sys
sys.path.append(path)
print(sys.path)
...