在Windows上构建自定义Anaconda安装程序时出错

时间:2019-02-14 10:39:44

标签: python windows-installer anaconda conda

我正在Windows 10 64bit上创建自定义的Anaconda安装程序。我创建了construct.yaml,如:

name : TensorFlowEnv
version : 1.0.0
specs :
   - numpy
channels :
   - https://conda.anaconda.org/anaconda/win-64

运行construcor命令后,出现以下错误

platform: win-64
Collecting package metadata: done
Solving environment: done
Checking for duplicate files ...

Checking for 'C:\Users\Equip\Anaconda3\envs\TensorFlowEnv\NSIS\makensis.exe'
NSIS version: v3.01
Traceback (most recent call last):
  File "C:\Users\Equip\Anaconda3\envs\TensorFlowEnv\Scripts\constructor-script.py", line 10, in <module>
    sys.exit(main())

  File "C:\Users\Equip\Anaconda3\envs\TensorFlowEnv\lib\site-packages\constructor\main.py", line 221, in main
    dry_run=opts.dry_run)
  File "C:\Users\Equip\Anaconda3\envs\TensorFlowEnv\lib\site-packages\constructor\main.py", line 128, in main_build
    create(info, verbose=verbose)
File "C:\Users\Equip\Anaconda3\envs\TensorFlowEnv\lib\site-packages\constructor\winexe.py", line 218, in create
    preconda_write_files(info, tmp_dir)
  File "C:\Users\Equip\Anaconda3\envs\TensorFlowEnv\lib\site-packages\constructor\preconda.py", line 135, in write_files
    write_index_cache(info, dst_dir)
 File "C:\Users\Equip\Anaconda3\envs\TensorFlowEnv\lib\site-packages\constructor\preconda.py", line 40, in write_index_cache
    write_repodata(cache_dir, url)
  File "C:\Users\Equip\Anaconda3\envs\TensorFlowEnv\lib\site-packages\constructor\conda_interface.py", line 61, in write_repodata
    fh.write(raw_repodata_str)
TypeError: write() argument must be str, not None

错误是:

  

TypeError:write()参数必须为str,而不是None

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我遇到此错误并解决了。首先,采取步骤来获取此错误:

我正在使用本地conda服务器。在执行“ conda索引”之后,我进入/ envs / someenv / conda-bld并在其中运行“ python -m http.server”。在那个文件夹中。哪个有效。在我的Construct.yaml中,我使用了“ http://localhost:8000”作为频道。这一直有效,直到我将conda软件包更新为更高版本。它不会在该conda频道中更新。

现在要解决该错误的步骤:

我做了一个'conda clean -i',然后必须手动删除该build文件夹中的所有repodata.json和index.html。并删除所有缓存文件夹。然后在win64 folde.r中,我做了'conda index'。然后生成索引文件和repodata,然后全部正确。然后,一旦完成,我就再次进行了conda构建,安装程序开始工作。

请注意,我必须强制执行'conda install conda = 4.5.13 Constructor = 2.3.0',并且不要使用构造函数v3和更高版本的conda,因为它们会生成看起来正确但缺少文件的安装程序。