mirror of
https://github.com/bndr/pipreqs.git
synced 2025-06-07 03:55:22 +00:00

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.
=============================== ``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
Languages
Python
88.3%
Jupyter Notebook
8.6%
Makefile
3.1%