使用 conda 创建自定义 h5py 构建的逻辑方法
Logical way to create a custom h5py build with conda
我在 conda 中遇到一些包的设计问题。我已完成以下步骤以到达我所在的位置:
- 构建自定义版本的 hdf5(启用某些编译器标志)
- 构建自定义版本的 h5py(修改后从自定义版本的 hdf5 调用不同的 API。这只能使用我的自定义版本的 hdf5 正确构建。
所以我的问题是:
我想打包我为整个系统的开发和生产机器使用而构建的这个新包,我想知道这样做的最佳方法。我以前从未制作过 python|conda 包,所以我不知道最佳实践。
大多数关于该主题的在线文档似乎都在处理让 conda 为您构建包的问题。例如,我可以在构建目录中构建 h5py(来自 h5py 修改后的源代码),然后在其中添加元数据和构建文件,使其成为我的包。或者我会使用 anaconda/lib/python3.5/site-packages/h5py-2*.egg 中的安装目录作为我的新包的来源。
打包后(我假设使用 conda build 命令),它通常保存在私人服务器上,还是可以上传到 conda 云中。
我知道这是一个非常开放的问题,因此感谢所有帮助。
我将引导您完成创建自己的 hdf5 包的步骤
确保您使用的是最新版本的 conda:
(root) [root@west-world hdf5]# conda update conda
安装包 conda-build
(root) [root@west-world hdf5]# conda install -y conda-build
下载默认频道中存在的软件包食谱的官方存储库
(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 以添加自定义编译器标志
(root) [root@west-world hdf5]# vi build.sh
如果编译器标志需要更多依赖项,则将它们添加到 meta.yml 文件中需求部分的构建子部分。此外,将 url 更新为 https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.17/src/hdf5-1.8.17.tar.gz。由于这是旧版本,URL 已更改。
(root) [root@west-world hdf5]# vi meta.yaml
是时候开始构建包了。 (您可能需要使用系统包管理器安装 gcc)
(root) [root@west-world hdf5]# conda build .
如果一切顺利,将构建包,您将看到类似于以下内容的输出:
# 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-client 包
(root) [root@west-world hdf5]# conda install -y anaconda-client
访问 https://anaconda.org/ 并在那里创建一个帐户。然后将刚刚创建的包上传到您的频道:
(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
现在,下次您可以使用您的频道从您的频道下载并安装软件包
(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 包是从你的频道中获取的。为此,请确保您的频道具有最高优先级。
(root) [root@kun-lun ~]# conda config --prepend channels nehaljwani
现在,由于您还需要进行细微的修改,因此您可以通过在文件中创建补丁并将其添加到 meta.yml 文件的补丁子部分来创建补丁并在构建过程中应用它,就像这里的那个:https://github.com/ContinuumIO/anaconda-recipes/blob/master/h5py/meta.yaml
有关如何构建包的更多信息,请访问:https://conda.io/docs/build_tutorials/pkgs2.html#
我在 conda 中遇到一些包的设计问题。我已完成以下步骤以到达我所在的位置:
- 构建自定义版本的 hdf5(启用某些编译器标志)
- 构建自定义版本的 h5py(修改后从自定义版本的 hdf5 调用不同的 API。这只能使用我的自定义版本的 hdf5 正确构建。
所以我的问题是:
我想打包我为整个系统的开发和生产机器使用而构建的这个新包,我想知道这样做的最佳方法。我以前从未制作过 python|conda 包,所以我不知道最佳实践。
大多数关于该主题的在线文档似乎都在处理让 conda 为您构建包的问题。例如,我可以在构建目录中构建 h5py(来自 h5py 修改后的源代码),然后在其中添加元数据和构建文件,使其成为我的包。或者我会使用 anaconda/lib/python3.5/site-packages/h5py-2*.egg 中的安装目录作为我的新包的来源。
打包后(我假设使用 conda build 命令),它通常保存在私人服务器上,还是可以上传到 conda 云中。
我知道这是一个非常开放的问题,因此感谢所有帮助。
我将引导您完成创建自己的 hdf5 包的步骤
确保您使用的是最新版本的 conda:
(root) [root@west-world hdf5]# conda update conda
安装包 conda-build
(root) [root@west-world hdf5]# conda install -y conda-build
下载默认频道中存在的软件包食谱的官方存储库
(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 以添加自定义编译器标志
(root) [root@west-world hdf5]# vi build.sh
如果编译器标志需要更多依赖项,则将它们添加到 meta.yml 文件中需求部分的构建子部分。此外,将 url 更新为 https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.17/src/hdf5-1.8.17.tar.gz。由于这是旧版本,URL 已更改。
(root) [root@west-world hdf5]# vi meta.yaml
是时候开始构建包了。 (您可能需要使用系统包管理器安装 gcc)
(root) [root@west-world hdf5]# conda build .
如果一切顺利,将构建包,您将看到类似于以下内容的输出:
# 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-client 包
(root) [root@west-world hdf5]# conda install -y anaconda-client
访问 https://anaconda.org/ 并在那里创建一个帐户。然后将刚刚创建的包上传到您的频道:
(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
现在,下次您可以使用您的频道从您的频道下载并安装软件包
(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 包是从你的频道中获取的。为此,请确保您的频道具有最高优先级。
(root) [root@kun-lun ~]# conda config --prepend channels nehaljwani
现在,由于您还需要进行细微的修改,因此您可以通过在文件中创建补丁并将其添加到 meta.yml 文件的补丁子部分来创建补丁并在构建过程中应用它,就像这里的那个:https://github.com/ContinuumIO/anaconda-recipes/blob/master/h5py/meta.yaml
有关如何构建包的更多信息,请访问:https://conda.io/docs/build_tutorials/pkgs2.html#