Постоянное добавление пути к файлу sys.path в Python


99

У меня был файл с именем example_file.py, которое я хотел использовать из различных других файлов, поэтому я решил добавить example_file.pyк sys.pathи импортировать этот файл в другом файле , чтобы использовать этот файл. Для этого я выполнил в IPython следующее.

import sys
sys.path
sys.path.append('/path/to/the/example_file.py')
print(sys.path)

Я мог видеть только что добавленный путь, и когда я пытался импортировать этот файл из другого пути к каталогу, например:

import example_file

он работал нормально, но как только я вышел из IPython, снова вошел в него и проверил sys.path, я увидел, что путь, который я добавил, отсутствует, так как мне добавить путь к sys.path на постоянной основе в Python?


3
Сделайте свой код подходящим пакетом, сделайте его easy_installable и будьте счастливы всю оставшуюся жизнь (вместо того, чтобы возиться). Кроме того: каждая документация ЧЕТКО сообщает вам, что sys.path.append()принимает каталог, содержащий файл, а НЕ ЕДИНЫЙ ПУТЬ К ФАЙЛУ.
Андреас Юнг



Не путайте системный путь с PYTHONPATH.
Бурхан Халид

Ответы:


95

Есть несколько способов. Один из самых простых - создать my-paths.pthфайл (как описано здесь ). Это просто файл с расширением, .pthкоторый вы помещаете в системный site-packagesкаталог. В каждой строке файла вы помещаете одно имя каталога, чтобы вы могли поместить туда строку с, /path/to/the/и она добавит этот каталог к ​​пути.

Вы также можете использовать переменную среды PYTHONPATH, которая похожа на системную переменную PATH, но содержит каталоги, в которые будут добавлены sys.path. См. Документацию .

Обратите внимание, что независимо от того, что вы делаете, sys.pathсодержит каталоги, а не файлы. Вы не можете «добавить файл в sys.path». Вы всегда добавляете его каталог, а затем можете импортировать файл.


1
хорошо, спасибо, все в порядке, я добавил свой каталог, который состоит из файла и его работы, когда я импортировал файл из другого места, но проблема, когда я вышел из ipython и снова зашел, чтобы проверить свой путь, он не появляется, Я не хочу делать это каждый раз, когда я ввожу код, я хочу постоянно добавлять путь к каталогу в sys.path, как это сделать
Шива Кришна Бавандла

@Kouripm: Ваш комментарий предполагает, что вы на самом деле не последовали ни моему предложению, ни предложениям в дублированном сообщении, указанном выше.
BrenBarn

1
siteПакет был совершенен.
Зейнаб Аббасимазар

8
исправил мою проблему с sys.path.append('C:\\python34\\lib\\site-packages')благодарностью!
Тайлерлинделл

Для потомков: .pthфайл - это то, что в документации по модулю сайта называется path configuration file. Обратите внимание на файл конфигурации пути:no check is made that the item refers to a directory rather than a file. No item is added to sys.path more than once. Blank lines and lines beginning with # are skipped. Lines starting with import (followed by space or tab) are executed.
Минь Тран

1

Этот способ сработал для меня:

добавив путь, который вам нравится:

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add

проверка: вы можете запустить cmd 'export' и проверить вывод, или вы можете проверить его с помощью этого cmd:

python -c "import sys; print(sys.path)"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.