【问题标题】:Error in creating a conda recipe from a Bitbucket package从 Bitbucket 包创建 conda 配方时出错
【发布时间】:2017-05-18 19:13:37
【问题描述】:

我在 Bitbucket 上有一个包,其中包含 Python、R 和 bash 中的代码文件。 我正在使用一台运行 Linux CentOS 7 的笔记本电脑。

我想为它创建一个conda package。我已经开始创建一个 conda 配方,但我可能犯了一些错误。我正在使用 conda 4.3.18。 我尝试使用以下命令构建我的 conda 配方,但它产生了几个我无法解释的错误:

$ conda build behst_conda_recipe/

BUILD START: behst--0
pulling from https://bitbucket.org/PROJECT_ADDRESS
searching for changes
no changes found
checkout: 'tip'
updating to branch default
108 files updated, 0 files merged, 0 files removed, 0 files unresolved
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Package: behst--0
source tree in: /home/davide/miniconda3/conda-bld/behst_1495134385344/work
+ source /home/davide/miniconda3/bin/activate /home/davide/miniconda3/conda-bld/behst_1495134385344/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac
+ set -o nounset -o pipefail -o errexit
+ set -o xtrace
+ echo 'Running build.sh'
Running build.sh
INFO conda_build.build:bundle_conda(861): Packaging behst--0
number of files: 0
Fixing permissions
Fixing permissions
Traceback (most recent call last):
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/utils.py", line 133, in _copy_with_shell_fallback
    stderr=subprocess.PIPE, stdout=subprocess.PIPE)
  File "/home/davide/miniconda3/lib/python3.5/subprocess.py", line 581, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'cp -a /home/davide/miniconda3/conda-bld/behst_1495134385344/work/LICENSE /home/davide/miniconda3/conda-bld/behst_1495134385344/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/info/LICENSE.txt' returned non-zero exit status 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/davide/miniconda3/bin/conda-build", line 6, in <module>
    sys.exit(conda_build.cli.main_build.main())
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/cli/main_build.py", line 334, in main
    execute(sys.argv[1:])
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/cli/main_build.py", line 325, in execute
    noverify=args.no_verify)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/api.py", line 97, in build
    need_source_download=need_source_download, config=config)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/build.py", line 1518, in build_tree
    config=config)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/build.py", line 1154, in build
    built_package = bundlers[output_dict.get('type', 'conda')](output_dict, m, config, env)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/build.py", line 893, in bundle_conda
    create_info_files(metadata, files, config=config, prefix=config.build_prefix)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/build.py", line 494, in create_info_files
    copy_license(m, config)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/build.py", line 272, in copy_license
    locking=config.locking)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/utils.py", line 177, in copy_into
    _copy_with_shell_fallback(src, dst_fn)
  File "/home/davide/miniconda3/lib/python3.5/site-packages/conda_build/utils.py", line 136, in _copy_with_shell_fallback
    raise OSError("Failed to copy {} to {}.  Error was: {}".format(src, dst, e))
OSError: Failed to copy /home/davide/miniconda3/conda-bld/behst_1495134385344/work/LICENSE to /home/davide/miniconda3/conda-bld/behst_1495134385344/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/info/LICENSE.txt.  Error was: Command 'cp -a /home/davide/miniconda3/conda-bld/behst_1495134385344/work/LICENSE /home/davide/miniconda3/conda-bld/behst_1495134385344/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/info/LICENSE.txt' returned non-zero exit status 1
Exception ignored in: <bound method BaseFileLock.__del__ of <filelock.UnixFileLock object at 0x7f30df7349e8>>
Traceback (most recent call last):
  File "/home/davide/miniconda3/lib/python3.5/site-packages/filelock.py", line 305, in __del__
  File "/home/davide/miniconda3/lib/python3.5/site-packages/filelock.py", line 292, in release
  File "/home/davide/miniconda3/lib/python3.5/site-packages/filelock.py", line 371, in _release
AttributeError: 'NoneType' object has no attribute 'flock'

有谁知道这些错误是什么意思?

编辑:这是 meta.yaml 文件:

package:

  name: behst

source:

  hg_url: https://bitbucket.org/PROJECT_ADDRESS

about:

  home: https://bitbucket.org/PROJECT_ADDRESS
  license: BSD
  license_file: LICENSE

虽然此时的 build.sh 只是一个 echo 命令:

#!/bin/bash
#
#$ -cwd
#$ -S /bin/bash
#
set -o nounset -o pipefail -o errexit
set -o xtrace

echo "Running build.sh"

【问题讨论】:

  • 您需要附上配方和 build.sh 脚本。
  • 我会手动运行'cp -a /home/davide/miniconda3/conda-bld/behst_1495134385344/work/LICENSE /home/davide/miniconda3/conda-bld/behst_1495134385344/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/info/LICENSE.txt' 并检查它的输出。
  • @grundic 我试过了,系统说file name too long
  • 这就是答案。你知道这些名字是从哪里来的吗?来自 conda 文件?
  • @grundic 我不知道...这是我一生中见过的最奇怪的文件名... conda 生成了它。我该怎么办?谢谢

标签: python bash anaconda conda miniconda


【解决方案1】:

您的主目录是否已加密?这是github上的relatedissues。 解决方案是使用--croot 指向您家外某处的参数,例如/tmp/_conda_build_。

【讨论】:

  • 我试过conda build behst_conda_recipe/ --croot ../temp_conda_recipe,得到了这个新错误:source tree in: ../temp_conda_recipe/behst_1495144731757/work /bin/bash: ../temp_conda_recipe/behst_1495144731757/work/conda_build.sh: No such file or directory 你知道怎么解决吗?谢谢
【解决方案2】:

您的主目录似乎已加密。处理加密文件夹时的字符长度从正常的 255 个字符长度减少。

因此,即使根据 conda 的贡献者,唯一的解决方案是将 --croot 与 /tmp/whateverfolder 等非加密位置一起使用

conda config --prepend pkgs_dirs /tmp/temp_conda_recipe 

然后

conda build behst_conda_recipe/ --croot /tmp/temp_conda_recipe 

【讨论】:

  • 谢谢,但没用。这是日志错误:subprocess.CalledProcessError: Command 'cp -a /tmp/tmp/behst_1495547326227/work/LICENSE /tmp/tmp/behst_1495547326227/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/info/LICENSE.txt' returned non-zero exit status 1
  • 能否告诉我 conda 是否允许您这样做:conda config --prepend pkgs_dirs /path/to/custom/dir/pkgs
  • 这是个好消息。如果你复制粘贴了上面的命令,你需要在/path/to/custom/dir/pkgs创建目录并执行conda build behst_conda_recipe/ --croot /path/to/custom/dir/pkgs
  • 我试过了,但我得到了同样的错误:subprocess.CalledProcessError: Command 'cp -a /tmp/tmp/behst_1495634312259/work/LICENSE /tmp/tmp/behst_1495634312259/_b_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/info/LICENSE.txt' returned non-zero exit status 1
  • 我看到你没有改变路径..我正在编辑答案。如果它没有运行,请告诉我。
猜你喜欢
  • 2017-08-20
  • 2016-08-07
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多