1.2. Installation

1.2.1. Prerequisite

Pyarmor requires shared Python runtime library and C library.

In Linux, please install shared Python runtime library when needed. For example, install Python 3.10 shared runtime library:

$ apt install libpython3.10

In Darwin, make sure the file @rpath/lib/libpythonX.Y.dylib exists. X.Y stands for Python major and minor version.

For example:

@rpath/lib/libpython3.10.dylib

@rpath is one of:

  • @executable_path/..

  • @loader_path/..

  • /System/Library/Frameworks/Python.framework/Versions/3.10

  • /Library/Frameworks/Python.framework/Versions/3.10

If there is no this file, please install necessary packages or re-build Python with enable shared option, or using install_name_tool to adapt current Python installation, refer to ../question.

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

Not all the platforms are supported, more information check Building Environments

Note

If only using Pyarmor 8+ features, installing pyarmor.cli instead 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

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 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

from pyarmor.cli.__main__ import main_entry

args = ['gen', 'foo.py']
main_entry(args)

Run it by Python interpreter:

$ python tool.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

$ 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.