首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用conda创建自定义h5py构建的逻辑方法

用conda创建自定义h5py构建的逻辑方法
EN

Stack Overflow用户
提问于 2017-04-07 21:12:54
回答 1查看 383关注 0票数 0

我在conda的一些软件包中有一个设计问题。我已经做了以下几个步骤来达到我的目标:

  1. 构建hdf5的自定义版本(启用某些编译器标志)
  2. 构建h5py的自定义版本(通过修改调用与hdf5的自定义版本不同的API)。这只能使用我的自定义版本的hdf5正确构建。

所以我的问题是:

我想包装这个新的包,我已经建立了用于整个系统的开发和生产机器,我想知道最好的方法。我以前从未做过python\conda包,所以我不知道最佳实践。

大多数关于这个主题的在线文档似乎都是关于让conda为您构建包的。例如,我可以在build目录中构建h5py (从h5py修改的源代码),然后在那里添加元文件和构建文件作为我的包。或者我会使用anaconda/lib/python3.5/site-packages/h5py-2*.egg中的安装目录作为我的新包的来源。

包完成后(我假设使用conda build命令),它通常保存在私有服务器上,还是可以上传到conda云。

我知道这是一个非常开放的问题,所以任何和所有的帮助都是值得感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-08 15:08:48

我将向您介绍创建您自己的hdf5包的步骤

确保您使用的是conda的最新版本:

代码语言:javascript
复制
(root) [root@west-world hdf5]# conda update conda

安装包conda-build

代码语言:javascript
复制
(root) [root@west-world hdf5]# conda install -y conda-build

下载默认通道中的包配方的正式存储库

代码语言:javascript
复制
(root) [root@west-world tmp]# wget -qO- https://github.com/ContinuumIO/anaconda-recipes/archive/4.3.0.tar.gz | tar -xvz
(root) [root@west-world tmp]# cd anaconda-recipes-4.3.0/hdf5/
(root) [root@west-world hdf5]# ls
bld.bat  build.sh  meta.yaml

编辑文件build.sh以添加自定义编译器标志

代码语言:javascript
复制
(root) [root@west-world hdf5]# vi build.sh

如果编译器标志需要更多的依赖项,那么将它们添加到meta.yml文件的requirements部分的build分段中。另外,将url更新为https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.17/src/hdf5-1.8.17.tar.gz。因为这是一个旧版本,所以URL已经改变了。

代码语言:javascript
复制
(root) [root@west-world hdf5]# vi meta.yaml

是时候开始构建包了。(您可能需要使用系统包管理器安装gcc )

代码语言:javascript
复制
(root) [root@west-world hdf5]# conda build .

如果一切顺利,将生成包,您将看到类似于以下内容的输出:

代码语言:javascript
复制
# If you want to upload package(s) to anaconda.org later, type:

anaconda upload /conda/conda-bld/linux-64/hdf5-1.8.17-1.tar.bz2

# To have conda build upload to anaconda.org automatically, use
# $ conda config --set anaconda_upload yes

anaconda_upload is not set.  Not uploading wheels: []



####################################################################################
Source and build intermediates have been left in /conda/conda-bld.
There are currently 2 accumulated.
To remove them, you can run the ```conda build purge``` command

安装anaconda客户端包

代码语言:javascript
复制
(root) [root@west-world hdf5]# conda install -y anaconda-client

访问https://anaconda.org/并在那里创建一个帐户。然后将您刚刚创建的包上传到您的频道:

代码语言:javascript
复制
(root) [root@west-world hdf5]# anaconda upload /conda/conda-bld/linux-64/hdf5-1.8.17-1.tar.bz2
Using Anaconda API: https://api.anaconda.org
The action you are performing requires authentication, please sign in:
Using Anaconda API: https://api.anaconda.org
Username: nehaljwani
nehaljwani's Password: 
login successful
Using Anaconda API: https://api.anaconda.org
detecting package type ...
conda
extracting package attributes for upload ...
done

Uploading file nehaljwani/hdf5/1.8.17/linux-64/hdf5-1.8.17-1.tar.bz2 ... 
 uploaded 2003 of 2003Kb: 100.00% ETA: 0.0 minutes


Upload(s) Complete

Package located at:
https://anaconda.org/nehaljwani/hdf5

现在,下次您可以使用您的频道从您的频道下载和安装软件包。

代码语言:javascript
复制
(root) [root@kun-lun ~]# conda install -c nehaljwani hdf5
Fetching package metadata ...........
Solving package specifications: .

Package plan for installation in environment /conda:

The following NEW packages will be INSTALLED:

    hdf5:  1.8.17-1      nehaljwani

现在,如果您想要构建h5py,过程几乎是一样的,但是您必须确保在构建这个包时,hdf5包是从您的通道中取出的。要做到这一点,请确保您的频道具有最高优先级。

代码语言:javascript
复制
(root) [root@kun-lun ~]# conda config --prepend channels nehaljwani

现在,由于您还需要进行微妙的修改,您可以创建一个修补程序并在构建过程中应用它,方法是在文件中创建修补程序并将其添加到meta.yml文件中的修补程序分段中,就像这里的一个:https://github.com/ContinuumIO/anaconda-recipes/blob/master/h5py/meta.yaml

有关如何构建包的更多信息,请访问:tutorials/pkgs2.html#

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43287167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档