Editing
Python Project Dependencies
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
[[Category:Python]] [[Category:Web Development]] == Workflow overview == Add a new pip dependencies to `requirements-to-freeze.txt`. <syntaxhighlight lang="bash"> # Install the dependencies with: $ pip install -r requirements-to-freeze.txt --upgrade # Save the specific dependency versions with: $ pip freeze > requirements.txt </syntaxhighlight> See [https://www.kennethreitz.org/essays/a-better-pip-workflow A Better Pip Workflow] for more details. == requirements.txt == First, for every project create and load a [[Virtual Environments with Python|virtual environment]] specific to the project before installing dependencies. Project dependencies are stored in a file named `requirements.txt` in the top level of the project, e.g.: <ref>[https://www.fullstackpython.com/application-dependencies.html Application Dependencies], Full Python Stack</ref> `requirements.txt` defines ''concrete'' dependencies for non-redistributable applications. It defines the dependencies between packages and the source for those packages, especially if they don't come from PyPi. An example `requirements.txt`: <syntaxhighlight lang="txt"> django==1.6 bpython==0.12 django-braces==0.2.1 django-model-utils==1.1.0 logutils==0.3.3 South==0.7.6 requests==1.2.0 stripe==1.9.1 dj-database-url==0.2.1 django-oauth2-provider==0.2.4 djangorestframework==2.3.1 </syntaxhighlight> === Saving dependencies === Anytime a package is installed with `pip`, it must be added to `requirements.txt`. Or better yet, add the package to `requirements.txt` and use the file to install the new package and verify the project's environment. A quick and reliable way to track all the packages currently installed with pip is with <syntaxhighlight lang="bash"> $ pip freeze > requirements.txt </syntaxhighlight> This saves the packages along with their current version. This means that installing from `requirements.txt` in the future might mean installing older versions of packages. [https://www.kennethreitz.org/essays/a-better-pip-workflow This article] has a recommendation for tracking both the top-level packages and all their dependencies. <ref>[https://www.kennethreitz.org/essays/a-better-pip-workflow A Better Pip Workflow] - Kenneth Reitz</ref> === Installing dependencies === Dependencies in `requirements.txt` can be installed with: <syntaxhighlight leng="bash"> $ pip install -r requirements.txt </syntaxhighlight> == setup.py == In addition to `requirements.txt`, `setup.py` is another file used to check for dependencies when installing a package. <ref>[https://caremad.io/posts/2013/07/setup-vs-requirement/ setup.py vs requirements.txt], Donald Stufft</ref> `setup.py` defines ''abstract'' dependencies for redistributable packages. The specific ''source'' for those dependencies should be defined elsewhere, e.g. `requirements.txt`. Given a directiory containing a `setup.py` file, a `requirements.txt` file can be written that will install all dependencies found in `setup.py` from PyPi: <pre> --index-url https://pypi.python.org/simple -e . </pre> If any dependencies should come from another source, `requirements.txt` can be modified similar to this: <pre> --index-url https://pypi.python.org/simple -e https://github.com/foo/bar.git#egg=bar -e . </pre> `pip` will first install the `bar` library from GitHub, then move on to install all the dependencies found in `setup.py`. Since the `bar` library has already been installed at this point, it will be skipped over when installing libraries from PyPi. === Installing packages defined in setup.py === Command to install the project dependencies defined in `setup.py`: <ref>[https://stackoverflow.com/questions/1471994/what-is-setup-py What is setup.py] - Stackoverflow</ref> <ref>[https://docs.python.org/3/installing/index.html#installing-index Installing Python Modules] - Python Software Foundation</ref> <syntaxhighlight lang="bash"> $ python setup.py install </syntaxhighlight> == Alternate workflow == Save the top-level dependencies in one file, then save the specific dependencies in `requirements.txt`. See [https://kenreitz.org/essays/a-better-pip-workflow A Better Pip Workflow] for details. But basically, on the development server create a file named `requirements-to-freeze.txt`. In that file list the top-level packages used by the project. <pre> $ pip install -r requirements-to-freeze.txt --upgrade $ pip freeze > requirements.txt </pre> == Notes == === See also === * [[Defining Django App Dependencies]] === References === <references/>
Summary:
Please note that all contributions to Littledamien Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Littledamien Wiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information