Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ofek/pybin

Cross-platform tool to put Python's user bin in PATH, no sudo/runas required!
https://github.com/ofek/pybin

cli linux macos packaging python scripts windows workaround

Last synced: 29 days ago
JSON representation

Cross-platform tool to put Python's user bin in PATH, no sudo/runas required!

Awesome Lists containing this project

README

        

pybin
=====

.. image:: https://img.shields.io/pypi/v/pybin.svg?style=flat-square
:target: https://pypi.org/project/pybin
:alt: Latest PyPI version

.. image:: https://img.shields.io/pypi/pyversions/pybin.svg?style=flat-square
:target: https://pypi.org/project/pybin
:alt: Supported Python versions

.. image:: https://img.shields.io/pypi/l/pybin.svg?style=flat-square
:target: https://choosealicense.com/licenses
:alt: License

-----

When you install a package via ``pip install --user ...``, any executables get
placed in a special directory specifically for the intended user. Unfortunately,
this location is most likely not included in your user's PATH variable. So for
example if you did ``pip3 install --user hatch`` and then tried to learn more
about your new tool by doing ``hatch --help``, it would fail to be located.
See: ``_

pybin solves this problem by providing a small CLI, and corresponding API, to
locate your Python's user bin and optionally update the user PATH. It supports
all major operating systems and does not require elevated privileges!

**Fear not, this only modifies the user PATH; the system PATH is never
touched nor even looked at!**

.. contents:: ``Table of Contents``
:backlinks: none

Installation
------------

pybin is distributed on `PyPI `_ as a universal
wheel and is available on Linux/macOS and Windows and supports
Python 2.6-2.7/3.3+ and PyPy.

.. code-block:: bash

$ pip install pybin

You may need ``sudo``. Do **NOT** use ``--user``!

Commands
--------

Only 2!

pybin
^^^^^

.. code-block:: bash

$ pybin -h
Usage: pybin [OPTIONS] COMMAND [ARGS]...

Shows the location of the bin directory and whether or not it is in the
user PATH.

Options:
-p, --pypath TEXT An absolute path to a Python executable.
--version Show the version and exit.
-h, --help Show this message and exit.

Commands:
put Updates the user PATH

pybin put
^^^^^^^^^

.. code-block:: bash

$ pybin put -h
Usage: pybin put [OPTIONS]

Updates the user PATH. The shell must be restarted for the update to take
effect.

Options:
-p, --pypath TEXT An absolute path to a Python executable.
-f, --force Update PATH even if it appears to be correct.
-h, --help Show this message and exit.

API
---

.. code-block:: python

>>> from pybin import in_path, locate, put_in_path
>>> in_path()
False
>>> locate()
'C:\\Users\\Ofek\\AppData\\Roaming\\Python\\Python36\\Scripts'
>>> success = put_in_path()

Manual modification
-------------------

Use the location pybin shows in concert with this very comprehensive document
Java provides: ``_

License
-------

pybin is distributed under the terms of both

- `MIT License `_
- `Apache License, Version 2.0 `_

at your option.