I recently found out this alternative method to automatically generate python dependencies for python project management.
It generates requirements.txt file based on the modules & packages you import in your project.
Through this short tutorial I will give you a brief overview on how to use pipreqs.
Installing pipreqs
Installation is pretty straight forward.
pip install pipreqs
Usage
To generate a requirements.txt file run.
pipreqs /<your_project_path>/
You can verify that the requirements.txt appears in the same folder.
You can also list the requirements in command terminal itself by using
--print additional flag.
Also for other options you can always run
pipreqs --help
Here is the help screen
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.
Why not use pip freeze ?
As the github repo of pipreqs says:
- pip freeze saves all packages in the environment including even those that you don't use in your current project.
- Also pip freeze is harmful. Read the following post to know more.
Top comments (5)
I made a simple wrapper that supports jupyter notebooks also:
pypi.org/project/pipreqsnb/
Thanks for this!
Hi Bhupesh! I was surprised to see my package that I've written sometime ago on dev.to! This makes me happy, glad you enjoyed using it.
Will it work for at least with Python 3.7?
Yes