Путь Python при импорте не может быть разрешен - PullRequest
0 голосов
/ 06 ноября 2018

Это, я полагаю, довольно распространенный вопрос, но я не могу импортировать мой модуль Python.

Этот код прекрасно работает на моей машине с Ubuntu дома, но, похоже, не работает на моей машине с Windows на работе. Это заставляет меня поверить, что это сводится либо к разнице в том, как Python работает в Windows, по сравнению с * nix-системой, либо к тому, что он обрабатывает модули совершенно по-другому.

Насколько я понимаю, модули должны быть загружены на основе sys.path, как и на любой другой вопрос, касающийся проблемы и прочитанного мною чтения.

Однако у меня есть простой проект, подобный этому:

DataStructures
├───.git
└───Python
    ├───DoublyLinkedListStarter.py
    └───LinkedLists
        ├───Doubly.py
        └──────LinkedNodes
               └───DoublyLinkedNode.py

Если я перехожу на Python/ и запускаю python .\DoublyLinkedListStart.py, я получаю ошибку модуля в Doubly.py:

Невозможно импортировать модуль LinkedNodes

Код является очень простым, это реализация Python двухсвязного списка, где DoublyLinkedListStarter импортирует Doubly, который реализует основной список тела, и импортирует DoublyLinkedNode.

DoublyLinkedListStart.py

from LinkedList import Doubly

Doubly.py:

from LinkedNodes import DoublyLinkedNode

Опять же, это работало абсолютно нормально на моей машине с Ubuntu, прежде чем я поднял его до мерзавца и спустил на свою машину с Windows.

1 Ответ

0 голосов
/ 06 ноября 2018

Попробуйте это:

from LinkedLists.LinkedNodes import DoublyLinkedNode

Но это проблема системной переменной PYTHONPATH. Другой способ сделать это - добавить его в системную переменную PYTHONPATH:

set PYTHONPATH=%PYTHONPATH%;LinkedLists\LinkedNodes
python .\DoublyLinkedListStart.py

Вы должны делать это каждый раз, когда открываете командную строку.

Путь, который использует python, доступен из скрипта python с помощью sys.path, который является списком. Это дает еще один способ добавить пути импорта:

import sys
sys.path.append("LinkedLists")
from LinkedNodes import DoublyLinkedNode

У вас есть варианты;)

...