2015-11-20 4 views
0

У меня есть библиотека, которая находится на PYTHONPATH:библиотека PYTHONPATH не доступна

In [2]: import sys 

In [3]: sys.path 
Out[3]:                                                
['',                                                 
...                                         
'/home/cchilders/scripts/python/my_scripting_library', 
] 

Он зарегистрирован в ~/.profile:

export PYTHONPATH="${PYTHONPATH}:/home/cchilders/scripts/python/my_scripting_library" 

еще, когда я вхожу питона/IPython, я не может его увидеть или использовать. Он имеет init .py на своем самом высоком уровне. Я использую kubuntu, и внезапно это не работает, но все, что я делаю, устанавливает. Что может вызвать это? Спасибо

+0

файл должен называться '__init __ py' – MaxNoe

+0

она есть, то есть переполнение что-то стек делает – codyc4321

+0

он работал на другом ноутбуке с такой же экспорт заявления и одна и та же папка в том же пути – codyc4321

ответ

1

Папки на PYTHONPATH должны содержать папки, которые являются пакетами python, а не являются путями к самим пакетам.

В этом случае, если my_scripting_library является вашим пакетом, а '/ home/cchilders/scripts/python/my_scripting_library' содержит файл __init__.py, он недействителен.

Предполагая my_scripting_library это пакет, который вы хотите импортировать, убедитесь, что файл __init__.py находится в пределах «/ дома/cchilders/скрипты/Python/my_scripting_library», то папка на пути должно быть:

export PYTHONPATH="${PYTHONPATH}:/home/cchilders/scripts/python" 

Вы можете в Python сделать это:.

>>> import my_scripting_library 
+0

Почему? почему бы вам использовать родительский, а не фактический каталог, который мне кажется бессмысленным. – codyc4321

+1

Поскольку вы увеличиваете до потенциально сотни библиотек, имеющих путь по каждому из них, это будет очень проблематично. По тем же соображениям он позволяет быстро отбрасывать новые библиотеки, отбрасывая их в уже существующую папку на пути. – J2C

+1

Если это помогает, подумайте о пути как о местах для поиска вещей. Он следует тому же поведению, что и ОС, но вместо того, чтобы быть исполняемыми в ОС, все это библиотеки в Python. ОС выполняет поиск всех папок на пути к исполняемому файлу, который соответствует при вводе команды, и если вам приходилось каждый путь по каждому двоичному файлу думать, как бесполезно будет ваш путь! – J2C

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