Search code examples
python-2.7pylint

Pylint and dynamic changes to sys.path


I've a project in which a python script must get the path to some of its imports from an environment variable. I'm handling this with

sys.path.insert(0, os.environ["PYDIR"])

which works fine when I run the application.

Pylint (in my Vim editor) is flagging import errors on all the modules I import from "PYDIR". I hate to disable the error message in the module since it's usually useful. OTOH, I also hate the visual clutter in my editor.

I suspect there's no good solution since Pylint doesn't execute the code but thought I'd ask anyway.

EDIT: See my below comment on difference between this question and PyLint "Unable to import" error - how to set PYTHONPATH?


Solution

  • For my particular case, the following seems to work satisfactorily. (I'm developing on OS X, I start a customized Terminal shell when working on this project, and my editor is 'mvim' (MacVim))

    Add to the Terminal startup shell command list:

    source .myprojectshellenv;
    

    where .myprojectshellenv contains:

    export PYDIR=path-to-myproject-python-modules
    alias pmvim="env PYTHONPATH=$PYDIR mvim"
    

    Then all I need remember is to edit the files with pmvim instead of mvim. (If I forget the error indicators from pylint (via syntastic) make it immediately obvious)