Почему мой питон не добавляет текущий рабочий каталог к ​​пути? - PullRequest
36 голосов
/ 20 июня 2011

Я постоянно вижу сайты, на которых упоминается, что каталог, который вы запускаете 'python', добавляется к пути python.Например, на http://www.stereoplex.com/blog/understanding-imports-and-pythonpath, авторские компакт-диски в папку / tmp затем выполняют команду «print (sys.path)», и вот, папка / tmp появляется в списке путей.Вот я пробую это в моей системе (с установленным 2.6.6):

пример структуры:

app/
  mymodule.py
  inner_folder/
    myscript.py

в myscript.py содержит строку:

import 'mymodule.py'

что я сделал:

cd app
python inner_folder/myscript.py # ImportError

Поскольку я выполняю интерпретатор из каталога app /, не должно ли 'app' быть помещено в путь python?Вот как многие документы, которые я читал, указали, какое поведение должно быть.

Пожалуйста, просветите!

(Я временно решил эту проблему, вручную добавив нужную папку в среду, но не хочу полагаться на это вечно. Поскольку многие сайты говорят, что это можно сделатьЯ хотел бы воспроизвести это для себя)

Ответы [ 2 ]

61 голосов
/ 20 июня 2011

Добавляется каталог скрипта , а не текущий каталог.Если вы превратите inner_folder/ в пакет, вы можете использовать python -m inner_folder.myscript для запуска скрипта, добавив app/ к sys.path.

4 голосов
/ 20 июня 2011

Независимо от того, находится ли текущий каталог в sys.path, операторы импорта обычно выглядят так:

import mymodule

Код, который вы написали, выглядит следующим образом:

import 'mymodule.py'
...