python环境和包管理器
abode的Python项目详细描述
住所:友好的python包装
大多数有经验的python用户都知道python的打包很粗糙。abode是通过扩展Conda使事情变得更好的一种尝试。它在引擎盖下使用conda,但使事情变得更简单和健壮。
康达是目前为止我首选的包装解决方案。它作为环境管理器(在我看来比virtualenv更好)和包管理器工作。默认的存储库集中在数据科学软件上。然而,conda也安装了来自pypi和pip的包。此外,与pip不同,Conda安装了非Python库,如MKL和CUDA,这些库通常将操作速度提高10-100倍
an aside:我建议安装Miniconda而不是完整的Python分布。绝大多数人不需要在水蟒分销中的每一个包裹。所以节省一些时间、带宽和存储空间。安装miniconda,然后根据需要创建环境并安装软件包。
主要吸引力
conda最大的问题是保存环境的依赖项并跨平台共享它。您可以使用conda env export > environment.yml
获取依赖项。假设我有一个安装了烧瓶、纽比和火把的环境。即使这些是我故意安装的唯一包,conda也会安装所有依赖项。Conda将环境导出到一个YAML文件,该文件如下所示:
name: flask
channels:
- pytorch
- defaults
dependencies:
- blas=1.0=mkl
- ca-certificates=2019.5.15=1
- certifi=2019.6.16=py37_1
- cffi=1.12.3=py37hb5b8e2f_0
- intel-openmp=2019.4=233
- libcxx=4.0.1=hcfea43d_1
- libcxxabi=4.0.1=hcfea43d_1
- libedit=3.1.20181209=hb402a30_0
- libffi=3.2.1=h475c297_4
- libgfortran=3.0.1=h93005f0_2
- mkl=2019.4=233
- mkl-service=2.0.2=py37h1de35cc_0
- mkl_fft=1.0.14=py37h5e564d8_0
- mkl_random=1.0.2=py37h27c97d8_0
- ncurses=6.1=h0a44026_1
- ninja=1.9.0=py37h04f5b5a_0
- numpy=1.16.4=py37hacdab7b_0
- numpy-base=1.16.4=py37h6575580_0
- openssl=1.1.1c=h1de35cc_1
- pip=19.1.1=py37_0
- pycparser=2.19=py37_0
- python=3.7.4=h359304d_1
- pytorch=1.2.0=py3.7_0
- readline=7.0=h1de35cc_5
- setuptools=41.0.1=py37_0
- six=1.12.0=py37_0
- sqlite=3.29.0=ha441bb4_0
- tk=8.6.8=ha441bb4_0
- wheel=0.33.4=py37_0
- xz=5.2.4=h1de35cc_4
- zlib=1.2.11=h1de35cc_3
- pip:
- click==7.0
- flask==1.1.1
- itsdangerous==1.1.0
- jinja2==2.10.1
- markupsafe==1.1.1
- werkzeug==0.15.5
prefix: /Users/mat/miniconda3/envs/flask
这里的问题是,定义版本可能会破坏原始版本以外的平台上的环境。我在我的macbook上创建了这个环境。不能保证所有这些依赖项都适用于Linux或Windows,这可能会破坏这些平台上的环境。
而且,很多时候我们并不关心我们的软件包的确切版本。相反,我们可以使用最新版本,或者任何比具有特定功能的版本更高的版本。在这些情况下,对特定版本的锁定过于严格
您可以使用此文件创建基本相同的环境:
name: flask
channels:
- pytorch
- defaults
dependencies:
- numpy
- pip
- python=3
- pytorch
- pip:
- flask
prefix: /Users/mat/miniconda3/envs/flask
Conda将获取此文件并解决您所使用的任何平台上的所有必要依赖项当然,如果需要特定的版本(比如这里的python=3
),可以定义这些版本。
abode通过创建和编辑这样的最小环境文件来管理conda环境。希望这将允许用户利用Conda正在做的伟大事情,同时使环境可移植
住所依赖性
- python 3.6+,因为我喜欢f字符串
- 皮亚姆
- 康达,如上所述,我建议安装Miniconda,而不是完全的水蟒分布
安装
PYPI提供住所:
pip install abode
用法
警告:现在很早。使用风险自负。
到目前为止,这是我所实现的。
创建环境
创建安装了python 3的新环境:
abode create -n env_name python=3
在幕后,这将创建一个环境文件,并使用conda从文件创建一个环境。
从环境文件创建
从环境文件(由abode或conda创建的yaml文件)创建环境:
abode create -f FILE
进入环境
我还不知道不在shell中使用conda怎么做,所以现在:
conda activate env_name
这对我来说是很重要的。在住宅区和康达区之间切换是很尴尬的
安装软件包
安装软件包与conda相同:
abode install numpy matplotlib
在幕后,abode将这些依赖项添加到环境文件中,然后从文件更新环境。
使用pip安装
使用--pip
标志安装带有pip的包
abode install flask --pip
从非默认通道安装
通道选项-c
将通道添加到环境中政府文件。
abode install pytorch -c pytorch
更新包
这将更新环境中所有未锁定版本的包
abode update
导出环境
abode export > environment.yml
这只是将活动环境的依赖项文件复制到新文件中
列出当前环境中的包
打印出所有已安装软件包的列表,相当于conda list
:
abode list
如果要查看已安装了abode的软件包:
abode list -f
或
abode list --file
列出由Abode
管理的环境abode env list
贡献
很高兴和你合作。创建问题或请求。打个招呼。