【问题标题】:How to backup python dependencies or modules already installed如何备份已安装的 python 依赖项或模块
【发布时间】:2011-09-07 13:58:00
【问题描述】:

我在我的 centos 系统中安装了许多 python 模块插件和库。 现在我不想在不同的计算机上再次安装每个东西。

有什么方法可以让我像 rpm 或任何其他东西一样制作软件包,以便当我在新位置安装所有模块时,也会安装依赖项,并且每次我安装新东西时我都可以更新安装包

【问题讨论】:

    标签: python dependencies backup


    【解决方案1】:

    如果您已经使用 pip(改进的 easy_install)安装了软件包,您只需执行 pip freeze > my-reqs.txt 即可获取已安装软件包的列表和版本。还有一些使用reqs文件安装的选项,我现在不记得了。

    Pipvirtualenv 配套使用,可用于处理依赖包的每个项目需求。

    【讨论】:

    • 当包被其他工具安装时,Pip 也可以工作。
    • 所以你的意思是它会通过 pip 、 easy install 、 rpm 或 tar.gz 获得所有安装的东西的列表
    • 显然它会从 shell 环境变量 $PYTHONPATH 中找到已安装的包,您可以在 shell 的启动文件中设置这些包 - 例如。 .bashrc 用于 Bash 或 .zshrc 或 .zshenv 用于 Zsh。还有 PYTHONSTARTUP 环境变量,您可以在其中设置 Python 特定的东西。
    • 您也可以使用pip install --install-option="--prefix=$PREFIX_PATH" package_name 安装到不同的库中。见stackoverflow.com/questions/2915471/…
    • 我认为你不一定需要在新机器上设置路径,只要做pip install -r my-reqs.txt,如果你只有一个Python安装。您可以设置路径来确定,尤其是当您后来决定在其他地方安装 Python 时。
    【解决方案2】:

    如果你不使用 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++ 扩展或其他已编译二进制文件的包。这些必须在其他机器上重新安装。

    【讨论】:

      猜你喜欢
      • 2016-10-20
      • 2010-10-20
      • 2016-09-16
      • 2013-08-26
      • 2020-05-28
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 2016-07-18
      相关资源
      最近更新 更多