Разрешение смешанных косых черт при импорте модуля

Я пытаюсь импортировать модуль из другого каталога, который происходит от того же родителя. Я получил код для работы в Python 2.7, но не в Python 3.5.

Я работаю в py_file.py ===> H:/other/apple/work_here/py_file.py

Я хочу импортировать total_text.py from ===> H:/other/apple/banana/total_text.py

Импорт работает в Python 2.7, но не в Python 3.5. В 3.5 я получаю красную волнистую линию под бананом, и когда я запускаю код, ошибка читает «нет модуля с именем «банан»»

import sys
import os
os.chdir(os.path.join("H:", "other", "apple", "work_here"))
sys.path.insert(0, os.path.join(os.path.split(__file__)[0], ".."))
import banana.total_text

Чтобы устранить эту проблему, я выполнил следующие инструкции печати в обеих программах и обнаружил, что я получаю смешанные косые черты в программе Python 3.5.

В Python 2.7, я получаю:

print sys.путь[0] = = = = = > H:otherapplework_here.. # Примечание здесь есть после e, который не появился.

печать ОС.listdir(sys.путь[0]) =====> [u’Banana, u’work_here]

В Python 3.5 я получаю следующее:

print sys.путь[0] = = = = = > H:/other/work_here.. # Примечание здесь есть после e, который не появился.

печать ОС.listdir(sys.путь[0]) =====> [‘apple’, ‘work_here’]

Я поискал вокруг и нашел частичное исправление: путем добавления ОС.путь.abspath (x) или os.путь.normpath (x), где x = os.путь.join (os.путь.split (file )[0], «..») Я получил его, чтобы вернуться два каталога в H:other ===> оператор import работает, если я пишу его как: > import apple.банан.total_text

Использование ОС.путь.abspath () версия, я получаю:

print (sys.путь[0]) =====> H:other

print (os.listdir(sys.путь[0])) =====> [‘apple’, ‘work_here’]

Я пытаюсь сделать так, чтобы версия Python 3.5 работала так же, как версия Python 2.7, и понять, если то, что заставило бы 3.5 вести себя по-другому.

1 ответ

  1. Я смог заставить работать версию 3.5. Я заменил: sys.путь.insert (0, os.путь.join (os.путь.split (file)[0], «..»)) с sys.путь.вставить (0,’..’)