Импортировать файл 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 без разрешения не допускается!

  • Как обслуживать файлы cloudstorage с помощью SDK приложения
  • список элементов списка счетчиков python и поместить результат в список
  • python: можно ли подключить консоль к запущенному процессу?
  • uncompyle6, повышающий ошибку синтаксического анализа при декомпиляции файла * .pyc
  • Как изменить переменные внутри классов? в python
  • facebook.GraphAPIError: токен активного доступа должен использоваться для запроса информации о текущем пользователе
  • Как вы проверяете интерфейсы утиного ввода в python?
  • Случайный взвешенный выбор
  • Сбросьте все, кроме первых 5 символов - Python
  • Вызов браузера Chrome из webbrowser.get () в Python
  • Python и UTF-8: что-то путать
  • Python - лучший язык программирования в мире.