Постійне додавання шляху до файлу до sys.path у Python


97

У мене був файл з ім'ям 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')спасибі!
tylerlindell

Для нащадків: .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.
Minh Tran

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.