2015-07-20 2 views
0

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

В частности, sys.path.insert (...) не будет работать для меня, потому что у меня не будет постоянного абсолютного пути к файлу.

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

project/packages/package_type/package/package_name/root/usr/bin/ 

Так что мне нужно импортировать

project/packages/package_type/foo/root/usr/bin/foo 
(file does not have .py extension, but is a python file) 

из

project/packages/package_type/bar/root/usr/share/bar/modules/foobar/bar.py 

Папка с файлом мне нужно import имеет пустой __init__.py файл Я также пробовал

import package-type.foo.root.usr.bin.foo as foo 

Я не уверен, как он предназначен для использования, так как она предназначена для упаковки Arch Linux, и файлы будут просто быть экспортированы в/USR/бен

+1

http://stackoverflow.com/questions/2601047/import-a-python-module-without-the-py-extension (об импорте файла python без расширения .py) – FunkySayu

+0

Кстати, я не понял что вы действительно хотите сделать: где вы выполняете свою программу? – FunkySayu

+0

@FunkySayu Это будет пакет для архивов. Таким образом, есть путь к нему, но я не хочу его жестко кодировать. – akalikin

ответ

-1

Вам нужно просто предоставить возможности среды, аналогичные установленному целевому пакету Arch Linux/любого другого. То есть ваши пакеты Python должны быть доступны через PYTHONPATH. Это более концептуально, чем технические проблемы.

Как замечает FunkySayu в комментарии - где вы выполняете свою программу - это важный вопрос. Важно, что ваш модуль должен быть проверен где-то: import 'ed, а затем используется. Таким образом, вы можете сделать sys.path все, что вы хотите в своем тестировании main.py - в частности sys.path.append(). Затем вы можете импортировать любой пакет таким образом, который будет работать для установленной целевой среды пакета.

Смежные вопросы