Installing a specific version of urllib3
is essential for maintaining compatibility and ensuring reproducible builds. This guide covers various methods to install, manage, and verify urllib3 versions.
Quick Installation
Install a specific version using pip:
pip install urllib3==2.1.0
Version Specification Methods
Exact Version
# Install exact version
pip install urllib3==2.1.0
# Install with user flag (if no admin rights)
pip install --user urllib3==2.1.0
Version Ranges
# Install compatible version (>= 2.0.0, < 3.0.0)
pip install "urllib3~=2.0.0"
# Install minimum version
pip install "urllib3>=2.0.0"
# Install version range
pip install "urllib3>=2.0.0,<2.2.0"
Virtual Environment Setup
Recommended: Always use virtual environments to avoid conflicts:
Python venv (Built-in)
# Create virtual environment
python -m venv urllib3_env
# Activate (Linux/macOS)
source urllib3_env/bin/activate
# Activate (Windows)
urllib3_env\Scripts\activate
# Install specific version
pip install urllib3==2.1.0
Using conda
# Create conda environment with specific urllib3
conda create -n myproject python=3.9 urllib3=2.1.0
# Activate environment
conda activate myproject
Requirements File Management
requirements.txt
# Pin exact version
urllib3==2.1.0
# Or use compatible version
urllib3~=2.0.0
# With security considerations
urllib3>=2.0.7 # CVE-2023-45803 fix
Install from requirements:
pip install -r requirements.txt
poetry (Alternative)
[tool.poetry.dependencies]
urllib3 = "^2.1.0"
poetry install
Version Verification
Check installed version
# Show package details
pip show urllib3
# List installed packages
pip list | grep urllib3
# Python code verification
python -c "import urllib3; print(urllib3.__version__)"
Check available versions
# List all available versions
pip index versions urllib3
# Or using older pip versions
pip install urllib3==
Common Version Management Scenarios
Downgrading
# Force reinstall specific version
pip install --force-reinstall urllib3==1.26.18
# Uninstall and reinstall
pip uninstall urllib3
pip install urllib3==1.26.18
Upgrading
# Upgrade to specific version
pip install --upgrade urllib3==2.1.0
# Upgrade to latest
pip install --upgrade urllib3
Handling Dependencies
# Install without dependencies (advanced)
pip install --no-deps urllib3==2.1.0
# Show dependency tree
pip show urllib3 --verbose
Popular urllib3 Versions
| Version | Release Date | Notable Features | |---------|--------------|------------------| | 2.1.0 | 2023-11-13 | Python 3.8+ support, security fixes | | 2.0.7 | 2023-10-17 | CVE-2023-45803 fix | | 1.26.18 | 2023-10-17 | Last 1.x series, legacy support | | 1.25.11 | 2020-10-19 | Python 2.7 compatibility |
Security Considerations
Install with security updates
# Always use latest patch version
pip install "urllib3>=2.0.7,<3.0.0"
# Check for security vulnerabilities
pip audit
For legacy systems
# Python 2.7 compatible (end-of-life)
pip install "urllib3<2.0.0"
# Python 3.6 compatible
pip install "urllib3>=1.26.0,<2.0.0"
Troubleshooting
Installation Issues
# Clear pip cache
pip cache purge
# Install with verbose output
pip install -v urllib3==2.1.0
# Use different index
pip install -i https://pypi.org/simple urllib3==2.1.0
Dependency Conflicts
# Check for conflicts
pip check
# Install with conflict resolution
pip install urllib3==2.1.0 --force-reinstall --no-deps
Web Scraping Context
When using urllib3 for web scraping, version selection impacts:
# urllib3 2.x example
import urllib3
# Modern connection pooling
http = urllib3.PoolManager(
cert_reqs='CERT_REQUIRED',
ca_certs=urllib3.util.ssl_.create_default_context().ca_certs
)
# Make request
response = http.request('GET', 'https://example.com')
print(f"Status: {response.status}")
print(f"urllib3 version: {urllib3.__version__}")
Best Practices
- Pin versions in production: Use exact versions in requirements.txt
- Test version upgrades: Always test in staging before production
- Monitor security advisories: Subscribe to urllib3 security updates
- Use virtual environments: Isolate project dependencies
- Document version choices: Include rationale in project documentation
Choose urllib3 versions based on Python compatibility, security requirements, and feature needs for your web scraping projects.