Импортировать файл Python из исполняемого скрипта

Я пытаюсь импортировать файл python (называемый test.py, который находится в родительском каталоге) из текущего исполняемого файла python (я назову его a.py). У всех моих каталогов есть файл с именем init.py (с двумя подчеркиваниями каждой стороны init)

Моя проблема: когда я пытаюсь импортировать нужный файл, я получаю следующую ошибку

Попытка относительного импорта в непакет

Мой код внутри a.py:

try: from .linkIO can_follow # error occurs here except Exception,e: print e print success 

Примечание. Я знаю, что если бы я создал файл с именем b.py и импортировал a.py (который сам по себе импортирует нужный файл python), все работает, так что происходит не так?

Например:

b.py:

 import a print "success 2" 

One Solution collect form web for “Импортировать файл Python из исполняемого скрипта”

Как указано в PEP 328, весь импорт должен быть абсолютным, чтобы блокировать маскирование друг друга. Абсолютный означает, что модуль / пакет должен находиться в пути sys.path . Относительный импорт (thats the dot for) разрешен только внутри пакетов, то есть если модули из одного пакета хотят импортировать друг друга.

Таким образом, это дает вам следующие возможности:

  1. Вы делаете пакет (который вы, кажется, уже сделали), и добавляете пакетный путь в sys. дорожка

  2. вы просто настраиваете sys.path для каждого модуля

  3. вы помещаете все свои пользовательские модули в один и тот же каталог, как и start-script / main-application

для 1. и 2. вы можете добавить пакет / модуль в sys.path следующим образом:

 import sys from os.path import dirname, join sys.path.append(dirname(__file__)) #package-root-directory 

или

 module_dir = 'mymodules' sys.path.append(join(dirname(__file__), module_dir)) # in the main-file 

КСТАТИ:

 from .linkIO can_follow 

не может работать! Операция import отсутствует!

Напоминаем: если вы используете относительный импорт, вы ДОЛЖНЫ использовать версию from .relmodule import xyz : from .relmodule import xyz . import .XYZ без разрешения не допускается!

  • Конфигурационный файл Python: любая рекомендация формата файла? Формат INI по-прежнему подходит? Кажется довольно старой школой
  • Дата первоначального выхода?
  • объединить два списка словарей на одном ключе
  • Использование дополнительных API Google в моей посуде (совместное использование с g + аккаунтами)
  • reverse () не работает в литерале Python?
  • Что такое Pythonic способ найти самый длинный общий префикс списка списков?
  • Интерфейс командной строки APT, например, да / нет?
  • Как отслеживать строки в файле python
  • Python - лучший язык программирования в мире.