【问题标题】:Python/Flask deployment without pip没有 pip 的 Python/Flask 部署
【发布时间】:2015-08-25 21:04:14
【问题描述】:

我通常使用一个相当简单的结构脚本来部署我的 Flask 应用程序,该脚本将源代码放在目标机器上,使用 pip 安装任何依赖项,然后使用所有必要的设置启动 uwsgi 并关闭它。

但是,我有一个新问题,我们环境中的一些新安全设置已阻止我们访问网络外部,因此尝试使用 pip 安装我们的依赖项失败。我考虑使用python setup.py sdist 创建一个包,认为这会在开发人员机器上构建所有内容,然后我可以将 .tar.gz 上传到部署机器并安装它,但它仍在尝试联系 pip 以获取依赖项。

有没有办法获得一个完全编译的包,其中包含依赖项以及我可以用来部署到我的服务器的所有内容?我可以使用一些sdist 设置吗?

【问题讨论】:

    标签: python deployment flask web-deployment


    【解决方案1】:

    假设您的构建机器与目标二进制兼容,或者您​​不需要任何已编译的扩展,您可以使用pip wheel 将您的项目及其所有依赖项编译到轮子,将这些文件复制到服务器,然后pip install 仅来自 wheel 目录。

    # on build machine
    cd myproject
    pip wheel --wheel-dir wheelbase .
    scp -r wheelbase me@target.example.org
    
    # on target machine
    pip install --no-index --find-links=wheelbase myproject
    

    您也应该能够将奇数 sdist 复制到 --find-links 目录中,在这种情况下,如果您必须在服务器上重新编译,pip 将从 sdist 安装。

    【讨论】:

    • 这看起来很有希望。我试过你的方法,似乎没有安装我需要的所有包。我尝试从 requirements.txt 文件构建轮子,该文件现在似乎获取了我所有的包,但是当我尝试将它们安装在盒子上时,我得到 MarkupSafe-0.23-cp27-none-linux_i686.whl is not a supported wheel on this platform .我查看了轮子目录,它有那个轮子。我的开发机器是 Ubuntu,我的目标是 CentOS。有什么建议吗?
    • 下载 MarkupSafe sdist 并将其也放入 wheel 目录中。 Pip 应该足够聪明来构建目标机器。或者只是在 CentOS 虚拟机上构建。 pypi.python.org/pypi/MarkupSafe
    • 谢谢。我最终做了后者。建立在现有的centos机器上并复制了wheeldir。似乎拥有了我现在需要的一切。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多