熟悉Python的都知道管理各种库有时候是多么痛苦的一件事!而有了conda包管理器,让库的安装和管理变得方便了不少。开发过程中,为了解决包的安装和管理问题,也方便用户安装,可以构建自己的conda包,并上传到Anaconda Cloud。
所需文件
-
meta.yaml
:包含与需要创建的库相关的信息,比如:库的名称、版本、依赖、Github或者源码链接等。 -
build.sh
:OSX和Linux系统上用于安装库的脚本 -
bld.bat
:Windows上用于安装库的脚本
操作流程
此处以
pycwr
为例,
pycwr
的Github链接为:https://github.com/YvZheng/pycwr.git
Note
注意:在开始之前,可先执行以下命令,关闭conda包的自动上传功能
|
|
-
执行以下命令,将
pycwr
的源码下载到本地
|
|
-
进入需要创建的库的目录中,创建
meta.yaml
、build.sh
和bld.bat
文件
首先创建
meta.yaml
文件,示例内容如下:
|
|
-
package
:给出了此包的名称和版本号 -
build
:skip
参数表示是否跳过一些指定条件,#
号后的[py<35]
表示跳过python版本低于3.5的版本,也可以跳过指定平台,比如win、linux、osx等。 -
source
:给出了包源码的链接,此处是github地址 -
requirements
:要构建的包的依赖,此部分依赖可通过github源中的requirements.txt
文件或setup.py
获取 -
about
:给出了包遵循的协议以及说明文档等信息
然后创建
build.sh
和
bld.bat
文件,
build.sh
内容如下:
|
|
Note
注意:可使用
bash -x -e
运行
build.sh
脚本,
-x
表示每执行一个命令就
echo
输出,
-e
表示出现错误就退出。
Note
注意:
build.sh
脚本里的
$SRC_DIR
环境变量表示
conda build
构建时存储
pycwr
源码的目录,如果不给定此变量的话,可能会出现
setup.py not found
的错误,从而导致无法顺利构建conda包。
bld.bat
的内容如下:
|
|
Note
注意:在
bld.bat
脚本中,最好在每一行命令之后都加上
if errorlevel 1 exit 1
,更有利于监控构建过程。
Note
注意:
bld.bat
脚本中没有需要特别注意的,出问题的是 git,如果给定的源码链接是 Github的源码链接,可能会出现
Error: git is not installed in root environment.
的错误。需要在Windows上安装git,或者取消
source
字段信息。
-
上述文件创建完成后,在
pycwr
目录下执行以下命令构建包
|
|
如果没有出现错误则表示构建成功,最后会给出如下信息:
|
|
- 构建成功后即可上传到自己的Anaconda Cloud账号中
|
|
等待上传完成即可。至此,所有的步骤就都已经完成了。
除了构建包之外,也可以直接安装到本地,使用如下命令可以直接在本地安装:
|
|
后续
全平台构建
上面呢就完成了,单个平台的conda包创建,如果想要创建多个平台,那么就需要重复上述操作,而且还要找不同的系统。想想都头大!不过conda提供了直接转换的操作,可以省去很多时间。使用如下命令即可转换到所有平台:
|
|
allplatform
目录下不仅包含了
linux-32/64
、
win-32/64
、
osx-64
,还有其他
linux
平台构建好的源码包。
如果使用Github源码包存在问题,那么可以使用
PyPi
源码链接。从而可以避免因为git导致的构建问题。
使用如下信息
|
|
代替
meta.yaml
中的git相关信息即可:
|
|
Note
注意:
url
和
sha256
可从
pycwr
的
PyPi
页面获取。
Tips
如果想要节省一些时间,可以设置自动上传
|
|
删除已上传包
如果想要删除之前已经上传的指定版本包,可使用如下命令:
|
|
Note
USERNAME
表示你Anaconda cloud的用户名
PACKAGENAME
表示要删除的包名称
0.2
:表示版本号
去除版本号可以删除指定包的所有版本:
|
|
复制别人的包
从某个通道拷贝已经创建的包到自己的Anaconda Cloud账户下:
|
|