小编mat*_*att的帖子

用docker部署python,图片太大

我们构建了一个使用大量库(numpy、scipy、张量流等)的大型 python 存储库,并通过 conda 环境管理这些依赖项。基本上,我们有很多开发人员做出贡献,并且任何时候有人需要一个新的库来完成他们正在开发的东西,他们就会“conda 安装”它。

快进到今天,现在我们需要部署一些使用我们的 repo 的应用程序。我们正在使用 docker 进行部署,但发现这些图像非常大并导致一些问题,例如 10+ GB。然而,每个单独的应用程序仅使用 environment.yml 中所有依赖项的一个子集。

是否有一些简单的策略来处理这个问题?从某种意义上说,我需要知道每个应用程序的依赖关系,但我不确定如何以自动方式执行此操作。

这里的任何帮助都会很棒。我对整个 AWS、Docker 和 python 部署都不熟悉……我们真的是一群需要扩展我们软件的工程师和科学家。我们有一些有效的方法,似乎必须有更好的方法。

python amazon-web-services docker

5
推荐指数
1
解决办法
1923
查看次数

构建一个大型python存储库,不导入所有内容

我在使用我们拥有的大型软件仓库来管理导入时遇到了问题.为了清楚起见,让我们假装repo看起来像这样:

repo/
    __init__.py
    utils/
         __init__.py
         math.py
         readers.py             
         ...
    ...
Run Code Online (Sandbox Code Playgroud)

现在我们的__init__.py文件已经设置好,以便我们可以做这样的事情

from repo.utils import IniReader 
Run Code Online (Sandbox Code Playgroud)

在这个例子中repo/utils/__init__.py会有

from .readers import IniReader, DatReader
Run Code Online (Sandbox Code Playgroud)

从可读性的角度来看,这种结构对我们来说效果很好,但我们现在在尝试部署应用程序时遇到了问题.

问题是这个......让我假装我正在编写一个看起来像这样的应用程序:

from repo.utils import IniReader
if __name__ == '__main__':
    r = IniReader('blah.ini')
    print(r.fields)
Run Code Online (Sandbox Code Playgroud)

现在from repo.utils import IniReader将执行repo/utils/__init__.py将在这种情况下将导入IniReader DatReader.让我们假装DatReader看起来像这样:

import numpy as np
import scipy
import tensorflow
from .math import transform

class DatReader():
...
Run Code Online (Sandbox Code Playgroud)

它遵循PEP8,所有导入都在文件的顶部.

这里的问题是DatReader需要一些重量级的导入(例如numpy,scipy,tensorflow是巨大的库).更糟糕的是,from .math import transform可能有类似的东西from repo.contrib import lookup …

python deployment import

5
推荐指数
1
解决办法
94
查看次数

科学堆栈存储库中的 Python 相对导入与绝对导入

我正在查看以下软件包(numpy、scipy、scikit-learn、scikit-image)以获取如何构建我自己的软件的灵感。我列出的软件包中似乎有以下约定:

  1. 在所有情况下,导入都会出现在每个文件的顶部
  2. 在“模块代码”中,所有“内部包”导入都是使用相对导入完成的
  3. 在“模块代码”中,所有“外部包”导入都是使用绝对导入完成的
  4. 在“测试代码”中,仅使用绝对导入

有人可以解释为什么要使用这些规则,或者向我指出一些参考资料吗?在他们所有的编码约定指南中,他们都声明遵循这个标准,但我没有看到原因的解释。我很想知道,所以非常感谢任何帮助!

这里有一些代码示例来帮助说明......

“模块代码示例”(sklearn/decomposition/pca.py)

from math import log, sqrt
import numbers

import numpy as np
from scipy import linalg
from scipy.special import gammaln
from scipy.sparse import issparse
from scipy.sparse.linalg import svds

from ..externals import six

from .base import _BasePCA
from ..base import BaseEstimator, TransformerMixin
from ..utils import deprecated
from ..utils import check_random_state, as_float_array
from ..utils import check_array
from ..utils.extmath import fast_logdet, randomized_svd, svd_flip
from ..utils.extmath import stable_cumsum
from ..utils.validation import check_is_fitted


def _assess_dimension_(spectrum, rank, n_samples, …
Run Code Online (Sandbox Code Playgroud)

python import numpy scipy

2
推荐指数
1
解决办法
222
查看次数

标签 统计

python ×3

import ×2

amazon-web-services ×1

deployment ×1

docker ×1

numpy ×1

scipy ×1