python - 配置 conda 构建以从 conda 包输出中排除一些文件夹

标签 python anaconda conda python-module conda-build

tl;博士:

如何排除文件夹被 conda build 打包?

上下文

我正在使用 conda build 构建我的第一个包。

我的 meta.yaml 文件如下所示:

package:
    name: 'some_name'
    version: {{ load_setup_py_data().get('version') }}

source:
    path: ./

build:
    script: python setup.py install --single-version-externally-managed --record=record.txt

requirements:
    run:
        - python >=3.6
        - pandas >=0.2
        - numpy >=1.12
        # Packages that must be installed
        # in the user's conda environment
        # to run this package.

    build:
        # Packages used by setup.py
        # to install this package.
        # May also install compilers
        # for non-python code.
        - python
        - setuptools

我的根目录(setup.py 和 meta.yaml 文件所在的位置)如下所示:

$ ls
README.md   __pycache__      input       isi_classif meta.yaml   
notebooks   output      scripts     setup.py    version.py

有些文件夹之所以存在,是因为它们在原型(prototype)制作过程中很有用,但我不想从存储库中删除它们。

如何从 conda 构建的包中排除文件夹(如 inputnotebooks)及其内容?

有关信息,我使用以下命令构建:

$ conda build some_folder_name

最佳答案

我认为最好的方法是创建一个目录 recipe/ 并将与食谱相关的文件移到那里。 然后将 meta.yaml 更改为

source:
    path: ./..

因此只有 recipe 目录的内容会被 conda 复制到包中。 其次,文件夹 notebooksinput 只有在要包含的 setup.py 中指定时才会被包含。否则它们将被忽略。因此它们不会作为 setup.py install 的一部分安装,也不会包含在包中。 所以你的源目录结构看起来像:

some_folder_name
|--README.md
|--__pycache__
|--input
|--isi_classif
|--recipe
   |--meta.yaml   
|--notebooks
|--output
|--scripts
|--setup.py
|--version.py

那么你仍然可以使用 conda 构建 some_folder_name

关于python - 配置 conda 构建以从 conda 包输出中排除一些文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55055035/

相关文章:

tensorflow - 如果所需的setuptools版本早于默认版本,如何安装Keras?

python - django-piston 够成熟吗?

Python - 一次性ifs

python - 在 Python 中使用 Regex 获取特定字符串

jupyter-notebook - `jupyter kernelspec list` 命令没有找到所有内核

windows - 无法在 Conda 环境中安装 Bioconda 软件包

python - 如何用 Pandas 中前一列的前一行单元格填充一列的一些空单元格?

python-3.x - 无法使用 Anaconda Python 导入 sqlite3

azure - 无法更改 Azure ML 笔记本中的虚拟环境

julia - IJulia 因预编译 LoadError 而失败