Poetry Python Dependency Management
Reference: Poetry CLI
pipx setup for CLI management​
-
Install pipx for global CLI availability Reference: pipx-in-pipx
pip install pipx-in-pipx
-
If the
pipx-in-pipx
not working directly-
Install pipx globally first
pip install pipx
-
Install pipx inside pipx
pipx install pipx
-
Ensure pipx path in environment variables
pipx ensurepath
-
Uninstall pipx in global environment, one inside pipx should be enough
pip uninstall pipx -y
-
Poetry Setup​
-
Install using pipx to have the CLI available globally
pipx install poetry
-
Make poetry to create virtualenv inside project
poetry config virtualenvs.in-project true
Poetry Management​
Setup Poetry project​
-
Setup Poetry project using the below command
poetry init
-
Provide the required details asked by poetry CLI to create pyproject.toml file
Create or Activate virtual environment​
Virtual environment will also get activated by default while running other commands like 'poetry install'
poetry shell
Install dependencies​
-
Install all dependencies
poetry install
-
Install with groups
poetry install with dev
-
Sync environment with lock file
poetry install --sync
Update dependencies​
-
Update all dependencies
poetry update
-
Update specific dependencies
poetry update requests toml
Install new dependencies​
-
Install latest version
poetry add requests pendulum
-
Install and allow minor version update
(Allow >=2.0.5, <3.0.0 versions)
poetry add pendulum@^2.0.5
-
Install and allow bugfix version update
(Allow >=2.0.5, <2.1.0 versions)
poetry add pendulum@~2.0.5
-
Install without upperbound
(Allow >=2.0.5 versions, without upper bound)
poetry add "pendulum>=2.0.5"
-
Install only specified version
(Allow only 2.0.5 version)
poetry add pendulum==2.0.5
-
Add git dependency
poetry add git+[https://github.com/sdispater/pendulum.git](https://github.com/sdispater/pendulum.git)
-
Add local dependency
poetry add ../my-package/dist/my_package-0.1.0.whl
-
Add dependency to a group. The below command will add pytest to dev dependencies
poetry add pytest -G dev
Uninstall dependencies​
-
Uninstall a dependency
poetry remove pendulum
-
Uninstall a dependency from a specific group
poetry remove pytest --group dev
List dependencies​
-
List all dependencies
poetry show
-
List all dependencies with branching
poetry show --tree
-
List specific dependency
poetry show pendulum
Build Project​
poetry build
Publish Project​
poetry publish
Internal PyPI​
Internal pypi server can be hosted in pc via pypiserver
package
Setup Internal Server (Server Side)​
-
Install
pypiserver
in pipxpipx install pypiserver
-
Setup a folder to act as pypi server
Recommendation: Create a sub directorypackages
-
Run the server.
pypi-server run -p 8080 -P . -a . --hash-algo=sha256 packages
-p 8080: Port to be used to serve
-P . -a .: No password file and no authentication
--hash-algo=sha256: hash algo to generate links
packages: path to publish packages
Publish to internal server via poetry (Client Side)​
-
Configure the internal PyPI URL in poetry
poetry config repositories.internal_pypi http:/localhost:8080
-
Publish to internal PyPI
poetry publish -r internal_pypi