Pre-release
This release is a pre-release and may not be stable for production use.
find-unicode-executable
A Python package that provides cross-platform Unicode executable path resolution. Like Unix which command but better.
Features
- Compatibility - Python 2+, Windows and Unix-like systems supported
- Generator-based - finds all matching executables, not just the first one
- Thread-safe - no global state
- Supports multi-call binaries - DOES NOT follow symlinks to canonical paths (that would mess up
argv[0]passed to multi-call binaries)
Installation
pip install find-unicode-executable
Usage Example
# coding=utf-8
from __future__ import print_function
from find_unicode_executable import find_unicode_executable
# Find all Python executables in resolution order
# Sample output on Linux:
# /home/user/miniconda3/bin/python3.12
# /usr/bin/python3.10
# /usr/bin/python3.10
# Sample output on Windows:
# C:\Python38\python.exe
# C:\Python27\python.exe
for executable_path in find_unicode_executable(u'python'):
print(executable_path)
Windows-Specific Features
On Windows, the package automatically handles:
PATHEXTenvironment variable (.exe,.bat, etc.)- Current directory checking (Windows behavior)
- Case-insensitive matching
Comparison to Alternatives
| Feature | find-unicode-executable | shutil.which |
Unix which |
|---|---|---|---|
| Multiple results | ✅ Yes | ❌ No | ❌ No |
| Windows PATHEXT | ✅ Yes | ✅ Yes | ❌ No |
| Thread-safe | ✅ Yes | ✅ Yes | ❌ No |
| Follows symlinks | ✅ Yes | ❌ No | ❌ No |
| Current dir (Windows) | ✅ Yes | ❌ No | ❌ No |
Why Use This Package?
- When you need all matches, not just the first one
- For consistent behavior across platforms
- When you need proper Windows executable resolution
- For thread-safe executable finding
- When you want to follow symlinks to real paths
Contributing
Contributions welcome! Please open issues or pull requests on GitHub.
License
This project is licensed under the MIT License.
Release files for find-unicode-executable 0.1.0a2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| find_unicode_executable-0.1.0a2.tar.gz | 4.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| find_unicode_executable-0.1.0a2-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 8.9 kB
Release files / find_unicode_executable-0.1.0a2.tar.gz
| Download URL | find_unicode_executable-0.1.0a2.tar.gz |
|---|---|
| Size | 4.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b2ead0391cb132820bc5ac60ccdf4dcc048aaf3968a62ba6299b9596255d35ff
|
|
BLAKE2b-256 checksum How to use checksums |
0468ccfe916c4294bac5df5f7df3a0c786d076762afc4133d812737932fe473f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|
Release files / find_unicode_executable-0.1.0a2-py2.py3-none-any.whl
| Download URL | find_unicode_executable-0.1.0a2-py2.py3-none-any.whl |
|---|---|
| Size | 4.7 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
17327898e495cee611c6cc66a523709130222cc1471a1598288657f71591cae5
|
|
BLAKE2b-256 checksum How to use checksums |
1f34d8e937b377136c15281ce9b1cf24d21d83af2f143d4fdfcba4b271db9cea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|