【发布时间】:2011-09-07 13:58:00
【问题描述】:
我在我的 centos 系统中安装了许多 python 模块插件和库。 现在我不想在不同的计算机上再次安装每个东西。
有什么方法可以让我像 rpm 或任何其他东西一样制作软件包,以便当我在新位置安装所有模块时,也会安装依赖项,并且每次我安装新东西时我都可以更新安装包
【问题讨论】:
标签: python dependencies backup
我在我的 centos 系统中安装了许多 python 模块插件和库。 现在我不想在不同的计算机上再次安装每个东西。
有什么方法可以让我像 rpm 或任何其他东西一样制作软件包,以便当我在新位置安装所有模块时,也会安装依赖项,并且每次我安装新东西时我都可以更新安装包
【问题讨论】:
标签: python dependencies backup
如果您已经使用 pip(改进的 easy_install)安装了软件包,您只需执行 pip freeze > my-reqs.txt 即可获取已安装软件包的列表和版本。还有一些使用reqs文件安装的选项,我现在不记得了。
Pip 与 virtualenv 配套使用,可用于处理依赖包的每个项目需求。
【讨论】:
pip install --install-option="--prefix=$PREFIX_PATH" package_name 安装到不同的库中。见stackoverflow.com/questions/2915471/…
pip install -r my-reqs.txt,如果你只有一个Python安装。您可以设置路径来确定,尤其是当您后来决定在其他地方安装 Python 时。
如果你不使用 Pip,那么你应该检查你的全局和/或用户 site-packages 目录中有哪些包。
以下解决方案来自:
How do I find the location of my Python site-packages directory?
全球网站包:
python -m site
或更简洁:
python -c "import site; print(site.getsitepackages())"
用户网站包:
python -m site --user-site
然而,后者不显示当前虚拟环境的站点包——为此使用distutils.sysconfig.get_python_lib():
python -c "from distutils.sysconfig import get_python_lib;
print get_python_lib()"
注意! 您不能只复制包含 C++ 扩展或其他已编译二进制文件的包。这些必须在其他机器上重新安装。
【讨论】: