1.2. Installation
Contents
1.2.1. Prerequisite
Pyarmor requires Python and C library (glibc or musl).
1.2.2. Installation from PyPI
Pyarmor packages are published on the PyPI. The preferred tool for installing packages from PyPI is pip. This tool is provided with all modern versions of Python.
On Linux or MacOS, you should open your terminal and run the following command:
$ pip install pyarmor
On Windows, you should open Command Prompt (Win-r and type cmd) and run the same command:
C:\> pip install pyarmor
After installation, type pyarmor --version on the command prompt. If everything worked fine, you will see the version number for the Pyarmor package you just installed.
If you need generate obfuscated scripts to run in other platforms, install the corresponding packages:
$ pip install pyarmor.cli.core.windows
$ pip install pyarmor.cli.core.themida
$ pip install pyarmor.cli.core.linux
$ pip install pyarmor.cli.core.darwin
$ pip install pyarmor.cli.core.freebsd
$ pip install pyarmor.cli.core.android
$ pip install pyarmor.cli.core.alpine
Not all the platforms are supported, more information check Building Environments
Note
If only using Pyarmor 8+ features, installing pyarmor.cli
instead of pyarmor
, could significantly decrease downloaded file size. For example:
$ pip install pyarmor.cli
1.2.2.1. Installed command
pyarmor is the main command to do everything. See Man Page.
pyarmor-7 is used to call old commands, it equals bug fixed Pyarmor 7.x
pyarmor-auth used by Group License to support unlimited docker containers
1.2.2.2. Start Pyarmor by Python interpreter
pyarmor is same as the following command:
$ python -m pyarmor.cli
1.2.3. Using virtual environments
When installing Pyarmor using pip, use virtual environments which could isolate the installed packages from the system packages, thus removing the need to use administrator privileges. To create a virtual environment in the .venv
directory, use the following command:
$ python -m venv .venv
You can read more about them in the Python Packaging User Guide.
1.2.4. Installation from source
Deprecated since version 8.2.9.
You can install Pyarmor directly from a clone of the Git repository. This can be done either by cloning the repo and installing from the local clone, on simply installing directly via git:
$ git clone https://github.com/dashingsoft/pyarmor
$ cd pyarmor
$ pip install .
You can also download a snapshot of the Git repo in either tar.gz or zip format. Once downloaded and extracted, these can be installed with pip as above.
Note
Do not use this method, it may not work since v8.2.9
1.2.5. Installation in offline device
All the Pyarmor pacakges are published in the PyPI, download them and copy to offlice device.
First install pyarmor.cli.core
Next install pyarmor
or pyarmor.cli
For example, install offline Pyarmor 8.2.9 in Linux for Python 3.10:
$ pip install pyarmor.cli.core-3.2.9-cp310-none-manylinux1_x86_64.whl
$ pip install pyarmor-8.2.9.zip
In Android or FreeBSD, there is no wheel in pyarmor.cli.core
, it should install source distribution and extra package pyarmor.cli.core.android
or pyarmor.cli.core.freebsd
. For example, install offline Pyarmor in Android for Python 3.10:
$ pip install pyarmor.cli.core-3.2.9.zip
$ pip install pyarmor.cli.core.android-3.2.9-cp310-none-any.whl
$ pip install pyarmor-8.2.9.zip
For some arches like ppc64le, mips32el, mips64el, riscv64, loongarch64, it need install pyarmor.cli.core.linux (glibc) or pyarmor.cli.core.alpine (musl). For example:
$ pip install pyarmor.cli.core-8.5.9.zip
$ pip install pyarmor.cli.core.linux-6.5.2-cp310-none-any.whl
$ pip install pyarmor.cli-8.5.9.zip
If need cross platform obfuscation, also install the corresponding platform package
For example, if need Themida protection, then install themida package:
$ pip install pyarmor.cli.themida-3.2.9-cp310-none-any.whl
In Linux to generate for Windows, install windows package:
$ pip install pyarmor.cli.windows-3.2.9-cp310-none-any.whl
If only using Pyarmor 8+ features, it’s recommend to install pyarmor.cli
instead of pyarmor
, the former file size is significantly less than the latter. For example:
$ pip install pyarmor.cli-8.2.9.zip
1.2.6. Termux issues
In Termux, after installation it need patch extensions. For example:
$ patchelf --add-needed /data/data/com.termux/files/usr/lib/python3.11/site-packages/pyarmor/cli/core/android/aarch64/pytransform3.so
$ patchelf --add-needed /data/data/com.termux/files/usr/lib/python3.11/site-packages/pyarmor/cli/core/android/aarch64/pyarmor_runtime.so
Sometimes, it need set runpath too. For example:
$ patchelf --set-rpath /data/data/com.termux/files/usr/lib /path/to/{pytransform3,pyarmor_runtime}.so
Otherwise it will raise error dlopen failed: cannot locate symbol “PyFloat_Type”
1.2.7. Run Pyarmor from Python script
Create a script tool.py
, pass arguments by yourself
For example,
from pyarmor.cli.__main__ import main_entry
args = ['gen', '-O', 'dist', '--platform', 'linux.x86_64,windows.x86_64', 'foo.py']
main_entry(args)
Run it by Python interpreter:
$ python tool.py
It’s same as this command:
$ pyarmor gen -O dist --platform linux.x86_64,windows.x86_64 foo.py
1.2.8. Clean uninstallation
Run the following commands to make a clean uninstallation:
$ pip uninstall pyarmor
$ pip uninstall pyarmor.cli.core
$ pip uninstall pyarmor.cli.runtime
$ pip uninstall pyarmor.cli.core.windows
$ pip uninstall pyarmor.cli.core.themida
$ pip uninstall pyarmor.cli.core.linux
$ pip uninstall pyarmor.cli.core.darwin
$ pip uninstall pyarmor.cli.core.freebsd
$ pip uninstall pyarmor.cli.core.android
$ pip uninstall pyarmor.cli.core.alpine
$ rm -rf ~/.pyarmor
$ rm -rf ./.pyarmor
Note
The path ~
may be different when logging by different user. $HOME
is home path of current logon user, check the environment variable HOME
to get the real path.