如何在没有 pip install 的情况下仅手动复制单个站点包?
How to copy manually only a single site package without pip install?
首先,我这样做的原因 - 我知道这是个坏主意,但我没有主意。
我想安装一个需要 ld
版本的软件包,该版本高于我的 Centos 6.5 仓库中的版本。因此,我应该要么在 Docker 和 运行 中设置所有内容,然后在生产中设置它——这是我缺乏经验的事情,而且我对一个严肃的项目感到不舒服。或者升级 ld
从外部源手动构建。我读到的内容可能会导致我的 Centos 遭到破坏。所以我剩下的最后一个选择是在其他机器上安装打包并手动将其复制到 site-packages
.
我已经成功地在我的家用笔记本电脑上安装了 Debian 下的软件包。
我到处都遇到了复制整个site-packages
目录的建议。我不想做的事情,因为我在两台机器上都有不同的包,我想避免弄乱其他东西。
我复制了包的 .so
构建和 .egginfo
。然后,在目标机器上, pip freeze
确实给我显示了传输的包。但是,Python尝试导入并使用时却找不到。
我还漏掉了什么吗?
都不是。
不要乱用系统 Python 的站点包目录,这只属于系统 Python env。你应该只 add/remove 使用你的 OS 的包管理器在其中编码(对于 CentOS 来说是 yum
)。在 Linux 中尤其如此,其中许多 OS 服务可以依赖系统 Python。
那么该怎么办呢?使用 virtualenv and/or pipx 将您要安装的软件包的任何其他依赖项与系统版本隔离。
首先,我这样做的原因 - 我知道这是个坏主意,但我没有主意。
我想安装一个需要 ld
版本的软件包,该版本高于我的 Centos 6.5 仓库中的版本。因此,我应该要么在 Docker 和 运行 中设置所有内容,然后在生产中设置它——这是我缺乏经验的事情,而且我对一个严肃的项目感到不舒服。或者升级 ld
从外部源手动构建。我读到的内容可能会导致我的 Centos 遭到破坏。所以我剩下的最后一个选择是在其他机器上安装打包并手动将其复制到 site-packages
.
我已经成功地在我的家用笔记本电脑上安装了 Debian 下的软件包。
我到处都遇到了复制整个site-packages
目录的建议。我不想做的事情,因为我在两台机器上都有不同的包,我想避免弄乱其他东西。
我复制了包的 .so
构建和 .egginfo
。然后,在目标机器上, pip freeze
确实给我显示了传输的包。但是,Python尝试导入并使用时却找不到。
我还漏掉了什么吗?
都不是。
不要乱用系统 Python 的站点包目录,这只属于系统 Python env。你应该只 add/remove 使用你的 OS 的包管理器在其中编码(对于 CentOS 来说是 yum
)。在 Linux 中尤其如此,其中许多 OS 服务可以依赖系统 Python。
那么该怎么办呢?使用 virtualenv and/or pipx 将您要安装的软件包的任何其他依赖项与系统版本隔离。