Alexandre Hannud Abdo 5d02bed770
Get the correct version when passed multiple paths
This emulates more closely the behavior of an actual import statement by:
1. traversing `sys.path` in reverse so we keep the first module found.
2. checking if there is actually a module at `path / i_item` to avoid false positives.
I've checked both behaviors in concrete cases and they both match the python
interpreter now, when previously they didn't.

An example where both 1. and 2. are necessary is when `sys.path` is
'/usr/lib:/usr/local/lib/pythonX.Y/site-packages/:/usr/lib/pythonX.Y/site-packages/'
and different versions of the package are installed in the last two paths.
Notice how `os.walk` will traverse '/lib/pythonX.Y/site-packages/' for the first path
('/usr/lib'), despite the fact that there's nothing to import from there, and that
traversing the paths in direct order would result in the last path overwriting the
version from the middle path, which comes first in import order.
2021-04-26 20:34:54 -03:00
2015-04-22 18:40:17 +02:00
2015-04-22 18:40:17 +02:00
2021-03-24 18:40:30 -03:00
2015-04-22 18:38:14 +02:00
2015-04-22 20:28:06 +02:00
2015-04-22 18:40:17 +02:00
2021-03-24 18:33:15 -03:00

===============================
``pipreqs`` - Generate requirements.txt file for any project based on imports
===============================

.. image:: https://img.shields.io/travis/bndr/pipreqs.svg
        :target: https://travis-ci.org/bndr/pipreqs
      
        
.. image:: https://img.shields.io/pypi/v/pipreqs.svg
        :target: https://pypi.python.org/pypi/pipreqs

        
.. image:: https://img.shields.io/coveralls/bndr/pipreqs.svg 
        :target: https://coveralls.io/r/bndr/pipreqs
  
        
.. image:: https://img.shields.io/pypi/l/pipreqs.svg 
        :target: https://pypi.python.org/pypi/pipreqs

        

Installation
------------

::

    pip install pipreqs

Usage
-----

::

    Usage:
        pipreqs [options] <path>

    Options:
        --use-local           Use ONLY local package info instead of querying PyPI
        --pypi-server <url>   Use custom PyPi server
        --proxy <url>         Use Proxy, parameter will be passed to requests library. You can also just set the
                              environments parameter in your terminal:
                              $ export HTTP_PROXY="http://10.10.1.10:3128"
                              $ export HTTPS_PROXY="https://10.10.1.10:1080"
        --debug               Print debug information
        --ignore <dirs>...    Ignore extra directories
        --encoding <charset>  Use encoding parameter for file open
        --savepath <file>     Save the list of requirements in the given file
        --print               Output the list of requirements in the standard output
        --force               Overwrite existing requirements.txt
        --diff <file>         Compare modules in requirements.txt to project imports.
        --clean <file>        Clean up requirements.txt by removing modules that are not imported in project.
        --mode <scheme>       Enables dynamic versioning with <compat>, <gt> or <non-pin> schemes.
                              <compat> | e.g. Flask~=1.1.2
                              <gt>     | e.g. Flask>=1.1.2
                              <no-pin> | e.g. Flask
Example
-------

::

    $ pipreqs /home/project/location
    Successfully saved requirements file in /home/project/location/requirements.txt

Contents of requirements.txt

::

    wheel==0.23.0
    Yarg==0.1.9
    docopt==0.6.2
    
Why not pip freeze?
-------------------

- ``pip freeze`` only saves the packages that are installed with ``pip install`` in your environment. 
- ``pip freeze`` saves all packages in the environment including those that you don't use in your current project (if you don't have ``virtualenv``).
- and sometimes you just need to create ``requirements.txt`` for a new project without installing modules.
Description
No description provided
Readme Apache-2.0
Languages
Python 88.3%
Jupyter Notebook 8.6%
Makefile 3.1%