Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不安装pip的情况下仅手动复制单个站点包?_Python_Pip_Site Packages - Fatal编程技术网

Python 如何在不安装pip的情况下仅手动复制单个站点包?

Python 如何在不安装pip的情况下仅手动复制单个站点包?,python,pip,site-packages,Python,Pip,Site Packages,首先,我这样做的理由——我知道这是个坏主意,但我没有主意 我想安装一个需要ld版本的软件包,该版本高于Centos 6.5的repo中的版本。因此,我要么在Docker中设置所有内容,然后在生产中运行它——这是我缺乏经验的事情,对于一个严肃的项目,我感到不舒服。或者从外部源手动升级ld。我读到的,可能会给我的世纪带来毁灭。因此,我剩下的最后一个选项是在其他机器上安装打包软件,并手动将其复制到站点软件包中 我已经在Debian下成功地在我的家用笔记本电脑上安装了这个软件包 我在everywhere

首先,我这样做的理由——我知道这是个坏主意,但我没有主意

我想安装一个需要
ld
版本的软件包,该版本高于Centos 6.5的repo中的版本。因此,我要么在Docker中设置所有内容,然后在生产中运行它——这是我缺乏经验的事情,对于一个严肃的项目,我感到不舒服。或者从外部源手动升级
ld
。我读到的,可能会给我的世纪带来毁灭。因此,我剩下的最后一个选项是在其他机器上安装打包软件,并手动将其复制到
站点软件包中

我已经在Debian下成功地在我的家用笔记本电脑上安装了这个软件包

我在everywhere遇到了复制整个
站点包
目录的建议。这是我不想做的事情,因为我在两台机器上都有不同的软件包,我想避免弄乱其他东西

我复制了包的
.so
构建和
.egginfo
。然后,在目标机器上,
pipfreeze
确实向我显示了传输的包。但是,当我尝试导入和使用它时,Python找不到它


我还遗漏了什么吗?

没有任何遗漏。

不要弄乱system Python的站点包目录,它只属于system Python环境。您应该只使用操作系统的软件包管理器(即CentOS的
yum
)在其中添加/删除代码。在Linux中尤其如此,许多操作系统服务都可以依赖系统Python


那么该怎么办呢?使用virtualenv和/或将要安装的软件包的任何其他依赖项与系统版本隔离。

您的意思是在Debian上创建一个virtualenv,我可以在其中安装软件包,安装需要的所有其他软件包,并将整个virtualenv文件夹复制到目标Centos服务器上,然后使用virtualenv运行我的应用程序?首先让我澄清一下,您是否需要更新版本的ld(GNU链接器)来从源代码安装Python包?如果是这样的话,我认为您应该只
altinstall
一个较新的链接器(或者只是在PATH中临时添加一个链接器)并为这个包构建一个Python bdist。在我的Debian上,它立即安装了。我不想在回购协议之外安装任何链接器,因为我不想冒任何风险。我了解到后果可能非常严重,这是一个生产服务器。您不必安装它。只需在路径上临时从homedir中预装一个较新的链接器,或者使用环境模块。然后执行
python setup.py bdist\u wheel
构建一个bdist文件,您可以继续使用它,而无需在安装时使用链接器。