Search code examples
pythonpip

use a relative path in requirements.txt to install a tar.gz file with pip


We're using a requirements.txt file to store all the external modules needed. Every module but one is gathered from internet. The other one is stored on a folder under the one holding the requirements.txt file.

BTW, this module can be easily installed with pip install

I've tried using this:

file:folder/module

or this:

file:./folder/module

or even this:

folder/module

but always throws me an error. Does anyone know which is the right way to do this?

Thanks


Solution

  • In the current version of pip (1.2.1) the way relative paths in a requirements file are interpreted is ambiguous and semi-broken. There is an open issue on the pip repository which explains the various problems and ambiguities in greater detail:

    https://github.com/pypa/pip/issues/328

    Long story short the current implementation does not match the description in the pip documentation, so as of this writing there is no consistent and reliable way to use relative paths in requirements.txt.

    THAT SAID, placing the following in my requirements.txt:

    ./foo/bar/mymodule
    

    works when there is a setup.py at the top level of the mymodule directory. Note the lack of the file:: protocol designation and the inclusion of the leading ./. This path is not relative to the requirements.txt file, but rather to the current working directory. Therefore it is necessary to navigate into the same directory as the requirements.txt and then run the command:

    pip install -r requirements.txt