A site for hosting software and data repositories associated with papers appearing in the journal _Operations Research_
View source on GitHub
Python offers several methods for specifying project dependencies, each suited for different use cases:
The traditional and simplest approach:
requests==2.28.1
numpy>=1.20.0
pandas~=1.5.0
==, >=, ~=, !=)requirements.txt for production, requirements-dev.txt for development dependenciespip install -r requirements.txtFor creating installable packages:
setup(
name="mypackage",
install_requires=[
"requests>=2.20.0",
"numpy",
],
extras_require={
"dev": ["pytest", "black"],
}
)
extras_requireThe modern, standardized approach (PEP 518, 621):
[project]
dependencies = [
"requests>=2.20.0",
"numpy>=1.20",
]
[project.optional-dependencies]
dev = ["pytest", "black"]
setup.py for many use casesUsed by Pipenv:
[packages]
requests = "*"
[dev-packages]
pytest = "*"
Poetry’s approach combines both:
pyproject.tomlpoetry.lockFor conda environments:
dependencies:
- python=3.9
- numpy
- pip:
- requests
==2.0.0 - exact version>=1.5.0 - minimum version~=1.5.0 - compatible release (>=1.5.0, <1.6.0)>=1.0,<2.0 - version rangeCurrent trend: The ecosystem is moving toward pyproject.toml as the standard for all Python projects, with lock files (Poetry, PDM, or pip-tools) for reproducible environments.