跨平台安装注意事项

虽然Python本身是跨平台的,但是FullTClash需要的依赖包/库对于跨平台的兼容性并不是很好。这体现在某些库是用某些语言编写的(例如Rust、C/C++),这些包/库只是给对python做了接口适配。让Python能够调用而已。

正常情况下,我们通过:

pip3 install somepackage

来安装一个第三方库/模块

但是这样有时候会无法安装,pip的大致搜索策略是:找到预编译的wheel包(构建轮子),找到是最好的情况,可以直接安装,但是也有可能找不到。由于python版本众多,平台也不尽相同。如果从 pypi或者镜像站找不到预编译的轮子,就会尝试本地构建。本地构建跨语言编写的包可能会出错!!

pip会尝试用本地编译的工具链帮你构建轮子, 最常见的编译工具链应该是 GCC。这时你就会发现安装这这个包的时间会更久,因为大部分时间都在构建轮子。

最坏情况是,pip没有找到编译工具链。

很不幸的是,本项目中有一个依赖包:cryptography 是一个加密套件库,是用rust写的。在不常用的环境中比如 Termux、Openwrt,通常pip无法找到它们预构建的轮子。

所以需要用到rust的编译器:rustc 来手动构建轮子。

先别急着装rust编译器,尝试使用你的系统包管理器查找有没有帮你构建好的。

比如openwrt可以搜索:

opkg list | grep python3-cryptography

一般都会有。使用包管理器安装即可。也就是说,对于pip无法安装的包,尝试使用系统的包管理器安装。

以下列出本项目涉及其他语言的包/库:

库名用途涉及语言

cryptography

加密密码学库

Rust

aiohttp

异步HTTP框架

C/Cython

Pillow

图像处理/绘图

C

tgcrypto

为Telegram适配的加密库

C

PyYAML

yaml格式处理

Cython

google-re2

更安全的正则引擎

C++

Last updated