代码之家  ›  专栏  ›  技术社区  ›  godot

将conda build配置为从conda包输出中排除某些文件夹

  •  0
  • godot  · 技术社区  · 5 年前

    tl;博士:

    如何将文件夹排除在 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
    

    有些文件夹之所以存在,是因为它们在原型设计期间很有用,但我不想从repo中删除它们。

    如何排除文件夹(如 input notebooks 以及conda构建的包中的内容?

    有关信息,我使用以下命令生成:

    $ conda build some_folder_name
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Dorian Turba niamulbengali    5 年前

    我正在寻找答案,我发现的一切都已经在问题的评论中了。既然这些解决方案似乎有效(不是预期的,但仍然有效),我将在这里解释。 我在一个测试项目上尝试第二种解决方案,结果成功了。我还是不习惯康达。

    第一:明确输出

    显式文件列表:

    显式文件列表是来自生成前缀根的相对路径。显式文件列表支持全局表达式。还支持目录名,并且它们递归地包含内容。

    outputs:
      - name: subpackage-name
        files:
          - a-file
          - a-folder
          - *.some-extension
          - somefolder/*.some-extension
    

    将文件移动到生成前缀中的脚本:

    创建文件或将文件移动到生成前缀中的脚本可以是任何类型的脚本。已知的脚本类型只需要指定脚本名称。目前已识别的扩展名列表是py、bat、ps1和sh。

    outputs:
      - name: subpackage-name
        script: move-files.py
    

    Specifying files to include in output

    第二:忽略前缀文件

    要指定单个文件名,请使用:

    build:   ignore_prefix_files:
    - file1
    

    Ignore prefix files

    我没有试过Michael Sarahan的答案,但如果正确的话,它应该会起作用。

    “您需要更改build.sh/bld.bat,以便在这些脚本结束之前从$PREFIX中删除文件。”