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

贡献

很高兴和你合作。创建问题或请求。打个招呼。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Grails中集成javaapplet   动态设置片段时发生java错误   JavaSpringVelocity模板电子邮件?   SpringHateOAS中java自定义json输出   java wait()和notify()相关问题   正则表达式中的单词边界是什么?   使用外部库将项目部署到glassfish后发生java NoClassDefFoundError   java为什么在这里初始化ListNode两次?   java libGDX移动三维模型   java使线程等待另一个线程的执行   正则表达式如何在java中使用正则表达式解析给定字符串   java SWT ScrolledComposite在32768像素后切断画布生成的图像