Monday-Friday, 9:00-17:00 +19056243686
header-image

Tab Tu

YOLO

You Only Live Once

feature image

iOS 应用上架流程(提交到AppStore)

1、账号准备

1.1  登录苹果开发者中心   https://developer.apple.com/

1.2  输入Apple ID和密码(没有则需注册)

1.3  加入苹果开发者计划(如已加入,可跳过这一步)

join the Apple  Developer  Program

Enroll

Start  Your Enrollment

根据需要选择账号类型(个体、公司、政府组织)。

选择账号类型

填写开发者信息

确认信息

购买信息

填写付款信息进行购买

2、准备证书

首先介绍以下相关概念:

   Certificate:证书是用来给应用程序签名的,只有经过签名的应用程序才能保证他的来源是可信任的,并且代码是完整的,未经修改的。在Xcode Build Setting的Code Signing Identity中,你可以设置用于为代码签名的证书。证书主要分为两类:Development和Production,Development证书用来开发和调试应用程序,Production主要用来分发应用程序。

  APP ID: 用于标识一个或者一组App,App ID应该是和Xcode中的Bundle ID是一致的或者匹配的。

   Devices:   包含了该账户中所有可用于开发和测试的设备。

   Provisioning Profile:配置文件,包含了上述的所有内容:证书、APP ID、设备。、

进入苹果开发者中心,点击下图所示位置进入证书、标识符和配置文件管理页面。

 进入证书、标识符和配置文件管理页面

2.1  证书管理

添加证书

以添加Development证书为例

关于创建CSR文件

上传CSR文件

生成完成,点击下载证书,双击即可安装

Production  证书制作过程类似

2.2标识符管理

App IDs

注册一个新的App  ID

确认App ID信息

2.3设备管理

所有设备

添加一个新设备

2.4配置文件管理

添加配置文件,以Development provisioning profile为例

选择App ID 

选择证书

选择设备

输入配置文件的名称

添加完成,下载后双击即可安装

3、开发程序

程序开发过程中需使用Development证书及Development provisioning profile

4、提交到App Store

进入iTunes Connet

我的App

新建App  填写基本信息

设置App 信息

设置价格与销售范围

填写App相关信息

在Xcode中,点击左侧目录中的项目名称,选择TARGETS -> Build Settings -> Signing ,将下图所示的文件切换成对应的发布证书和Distribution provisioning profile,同理将 PROJECT -> Build Settings -> Signing中的对应证书和provisioning profile 也进行切换。

在TARGETS -> General中可以编辑App的基本信息,包括App名称、Bundle ID 、版本号、适配系统的最低版本号以及设备类型等等。

编辑App信息和部署的设备信息

选择Generic iOS Device

选择 Produce -> Archive。

打包应用程序

上传到AppStore

Upload to App Store

此时会提示选择开发者账号,如之前没有登录,则点击“Add”按钮添加账号,如果已登录则直接选择相应账号。

点击按钮,添加账号

选择对应开发者账号

点击“upload”上传应用。

上传App

大约过十分钟左右,刷新 iTunes Connect ,可以看到“构建版本”右侧多出了一个添加按钮,点击后可以看到刚刚上传的App,选择并点击“完成”。

点击添加按钮

选择构建版本

最后,点击页面右上角的“提交以供审核”就大功告成了,坐等审核通过吧!

提交以供审核

https://blog.csdn.net/belalds/article/details/84568973

feature image

完美解决MacOS catalina 升级后Vmware黑屏的问题

没有升级之前虚拟机都可以正常使用,自从升级catalina以后,虚拟机打开就一直黑屏。

造成黑屏原因是, 更新系统, 或者直接重装系统后, 旧版本的VMware不会自动去申请屏幕访问权限. 解决方案: 更新VMware新版本. 或者手动添加屏幕录制权限给VMware. 以下提供手动添加权限的解决方案.

1. 尝试关闭Rootless,重启按住 Command+R 进入Recovery Mode, 打开Terminal输入以下命令

csrutil disable


2. 重启机器进入系统. 打开Terminal输入以下命令重置VMware权限, 并且重新手动添加屏幕录制监听权限.

  • tccutil reset All com.vmware.fusion
  • sudo sqlite3 “/Library/Application Support/com.apple.TCC/TCC.db” ‘insert into access values (“kTCCServiceScreenCapture”, “com.vmware.fusion”, 0, 1, 1, “”, “”, “”, “UNUSED”, “”, 0,1565595574)’
  • sudo sqlite3 “/Library/Application Support/com.apple.TCC/TCC.db” ‘insert into access values (“kTCCServiceListenEvent”, “com.vmware.fusion”, 0, 1, 1, “”, “”, “”, “UNUSED”, “”, 0,1565595574)’
  • sudo sqlite3 “/Library/Application Support/com.apple.TCC/TCC.db” ‘insert into access values (“kTCCServicePostEvent”, “com.vmware.fusion”, 0, 1, 1, “”, “”, “”, “UNUSED”, “”, 0,1565595574)’

3. 重启按住 Command+R 进入恢复模式 打开Terminal输入

csrutil enable


原文链接:https://blog.csdn.net/u010805109/article/details/102550416

feature image

iPhone屏幕分辨率和适配规则(基础篇)

屏幕尺寸

机身尺寸

机身尺寸是指手机机身的尺寸。

iPhone 8机身尺寸

机身尺寸和APP设计无关,这个尺寸不常用。

屏幕尺寸

屏幕尺寸是指屏幕的对角线长度。

iPhone 屏幕尺寸

一般情况下,我们说iPhone 8的屏幕是4.7寸屏,就是指iPhone 8的屏幕对角线为4.7英寸。

单位

屏幕的单位是以英寸为单位。换算关系如下:

1 inch = 2.54cm = 25.4mm 

分辨率

历代iPhone的分辨率

设备逻辑分辨率(point)物理分辨率(pixel)屏幕尺寸缩放因子PPI
iPhone 2G320 × 480320 × 4803.5寸@1x163
iPhone 3320 × 480320 × 4803.5寸@1x163
iPhone 3GS320 × 480320 × 4803.5寸@1x163
iPhone 4320 × 480640 × 9603.5寸@2x326
iPhone 4S320 × 480640 × 9603.5寸@2x326
iPhone 5320 × 568640 × 11364.0寸@2x326
iPhone 5S/5C320 × 568640 × 11364.0寸@2x326
iPhone 6375 × 667750 × 13344.7寸@2x326
iPhone 6 Plus414 × 7361080 × 19205.5寸@3x401
iPhone 6S375 × 667750 × 13344.7寸@2x326
iPhone 6S Plus414 × 736(896)1080 × 19205.5寸@3x401
iPhone SE320 × 568640 × 11364.0寸@2x326
iPhone 7375 × 667750 × 13344.7寸@2x326
iPhone 7 Plus414 × 7361080 × 19205.5寸@3x401
iPhone 8375 × 667750 × 13344.7寸@2x326
iPhone 8 Plus414 × 7361080 × 19205.5寸@3x401
iPhone X375 × 8121125 × 24365.8寸@3x458
iPhone Xs2436 × 11255.8寸@3x458
iPhone Xs Max2688 × 12426.5寸@3x458
iPhone XR1792 × 8286.1寸@3x326

屏幕对比

屏幕宽高比

设备物理分辨率(pixel)宽高比(近似)比例(近似)
iPhone 2G/3/3GS320 × 4801.502:3
iPhone 4/4S640 × 9601.502:3
iPhone 5/5S/5C/SE640 × 11361.779:16
iPhone 6/6S/7/8750 × 13341.779:16
iPhone 6/6S/7/8 Plus1080 × 19201.779:16
iPhone X1125 × 24362.169:20

从比例可以看出,历代iPhone中,在iPhone 5和iPhone X进行了加长处理。中间的各个版本的比例是一致的。

因为iPhone的屏幕尺寸数值比较奇怪,都不是整数,所以只能取一个近似值。事实上,在像素级的差异上,肉眼是很难分清楚细微差异的。

逻辑分辨率和物理分辨率

逻辑分辨率以point(pt)为单位,物理分辨率以pixel(px)为单位。

区分逻辑分别率和物理分辨率是因为在早期iPhone 3GS之前,iOS绘制图形以point为单位。在这个时期point和pixel严格对应在一起。在iPhone 3GS上:

1 pt = 1 px

到了iPhone 4开始,苹果引入了Retina屏幕。在一定物理单位内可以显示2倍的像素。iPhone 4的屏幕物理尺寸还是3.5寸,分辨率为640 × 960,提升了4倍。也就是说,原先的1 point可以容纳4个pixel。

到了iPhone 4,逻辑分辨率和物理分辨率的关系就成了:

1 pt = 2 px

缩放因子(scale)

因为逻辑分辨率和物理分辨率存在着一定的比例关系,这种比例的关系称为缩放因子。其对应关系为:

1 pt = scale * px

在iPhone 3GS上,缩放因子为1(以“@1x”来表示)。在iPhone 4上,缩放因子为2(以“@2x”来表示)。

奇葩的iPhone 6屏幕

iPhone 6有iPhone 6和iPhone Plus两个屏幕尺寸。其中iPhone 6 Plus的屏幕均为5.5寸屏幕。其标明缩放因子为@3x,我们通过缩放因子计算,其分辨率应该为1242 × 2208。但是,实际上iPhone 6 Plus的像素为1080 × 1920。严格来说,iPhone 6 Plus的缩放因子应该为:

scale = 1080 px / 414 pt ≈ @ 2.6x

实际上,iPhone 6 Plus上做了特殊的缩放处理。假设我们画一条100pt的线。经过如下步骤进行最终显示出来:

  1. 以逻辑点描述
    开始我们以点的方式描述直线所在的起始位置。100pt的直线。
  2. 渲染成像素点
    通过缩放因子@3x,将点渲染成逻辑画布。100pt被渲染成了300px。
  3. 进行缩放采样
    对渲染进行缩放采样,计算实际显示的画布。缩小的倍数为1.15(@3x/@2.6x)。300px被缩小成了260px。

目前iPhone 6/7/8 Plus均同样处理。用@3x这样的缩放因子可能是为了编程的时候更容易。有兴趣的可以看一下这篇文章《奇葩的iPhone 6 屏幕》

像素密度PPI

像素密度PPI(Pixel Per Inch)是指每英寸上容纳的像素数量。

计算PPI,可以简单用勾股定理计算出对线上出现的像素,再除以对角线上长度:

将iPhone 4屏幕数据代入公式:

PPI对显示的影响

我们知道,手机的屏幕是以像素的方式一个一个呈现出来的。PPI值越高,意味着有更细腻的画面。

较低PPI的屏幕看起来有颗粒感。但是当PPI值到达一定程度后,再继续提升肉眼就分别不出来了。这就是苹果提出的Retina显示屏的概念。在一定的距离内,手机显示屏在200PPI以上时,肉眼就分辨不出单个像素点了。

注意,这里有两个限制条件:“在一定的距离内”、“在手机显示屏上”。有兴趣的可以详细了解,PPI值对我们适配影响不大,这里不展开。

好了,关于屏幕分辨率的基础概念就讲到这里。下一篇《屏幕分辨率和适配规则-iPhone篇(规则篇)》再讲讲适配的规则。


https://www.jianshu.com/p/41a8ccdf91ed

feature image

IOS Aspect Fill 和 Aspect Fit的区别

Scale:拉伸图片

Aspect:图片长宽的比例,保持图形的长宽比,保持图片不变形。

Aspect Fill:在保持长宽比的前提下,缩放图片,使图片充满容器。

Aspect Fit:在保持长宽比的前提下,缩放图片,使得图片在容器内完整显示出来。

Scale to Fill: 缩放图片,使图片充满容器。图片未必保持长宽比例协调,有可能会拉伸至变形。

下图是网上下载的用来说明几个属性的含义:


原文链接:https://blog.csdn.net/annkie/article/details/49247755

feature image

ELKAY

2010年,Elkay公司推出了EZH2O水瓶填充物,这是公认的防止塑料瓶进入垃圾填埋场的方法。[7]的独特柜台上,让用户看到有多少瓶已从垃圾填埋场保存在一个特定的位置,这有“使事情成为病毒”的效果。EZH2O的出现源于Elkay的商务旅行者们开始注意到他们的同伴们在“机场跳舞”。更多的人带着塑料水瓶。他们不想从喷泉里喝水,而是想把水壶灌满。这不是工作。这种舞蹈是一种洗车,是旅行者们在不溅水到鞋子上的情况下,试图把瓶子倾斜到合适的角度来重新装水

2013年,Elkay制造公司在一起国际贸易案件中胜诉,该案件涉及该公司提出的反倾销和反补贴申诉,以及“中国生产商对不锈钢拉制水槽的非法定价,对Elkay制造公司和其他国内生产商造成了实质性伤害”

Elkay目前有四个主要的产品类别-冷却器;水槽、水龙头及配件;橱柜;餐饮和打瞌睡。他们的管道产品包括4000个sku的厨房水槽,由各种不同的材料制成。[2] Elkay主要生产民用厨房和商用产品,如水槽、酒吧、水龙头、橱柜和商用厨房电器。该公司拥有市场上最大的饮水机产品,最近又售出了第500万台饮水机。在最近的[2],Elkay详细说明了饮水机的单位,通过创建瓶子灌装单位,既可以改造现有的饮水机单位,或独立的。这些单位通过推广使用可重复使用的塑料瓶来减少塑料废物。他们最流行的灌装机模型是ezH2O。[11] Elkay产品通过分销商、设计师、家居中心机构和各种网络零售商销售。

公司历史:

私人公司

成立:1920

雇员数:3900

销售额:5.75亿美元(2003年美国东部时间)

332998搪瓷铁及金属卫生洁具制造;332913水暖治具及配件制造;337110木厨柜及台面制造

Elkay制造公司是最著名的住宅和商业水槽下的名人,光泽,美食,和Revere标签。此外,伊利诺斯州的奥克布鲁克私人公司通过Phylrich国际公司生产水龙头、淋浴系统、相关硬件和固定装置;通过子公司Yorktowne、Medallion和MasterCraft的厨柜;还有哈尔西·泰勒的饮水机。艾尔凯还参与了马来西亚的合资企业艾尔凯环太平洋公司,该公司在整个环太平洋地区销售马来西亚制造的瓶装水和冷却器。Elkay由十家私营公司组成,员工约3900人,在美国、加拿大、墨西哥和环太平洋地区拥有14家工厂和24个配送中心。Elkay最大的客户是Home Depot

形成于1920年

埃尔凯于1920年由利奥波德·卡茨(Leopold Katz)、他的儿子路易斯(Louis)和一个名叫埃尔莱夫·罗巴斯(Ellef Robarth)的锡匠创立。公司的名字是由Robarth的名字和Katz的姓的首音组合而成的。这三个人在芝加哥租了2100平方英尺的地方,开设了一家手工制作餐具室银水槽的商店,他们出售这些水槽,用有轨电车送货,并安装在芝加哥富人的家中。这家只生产一种产品的公司很快就建立起了质量的声誉,因此,在创业的第一年结束时,艾尔凯的员工人数从3名创始人增加到了7名。两年后,Robarth离开了公司,原因早已被遗忘,但是Elkay在没有他的情况下继续成长。到20世纪20年代末,艾尔凯的水槽成为了畅销书,促使人们搬到更大的住所,并在大萧条时期雇佣了更多的员工。

艾尔凯公司在1935年迎来了其历史上的一个关键时刻,当时它推出了第一个不锈钢水槽,这是最早的由金属制成的轻型水槽,被包裹在一个木制框架内。三年内,艾尔凯成为美国第一家大规模生产不锈钢水槽的公司。正如美国的许多工业一样,在第二次世界大战期间,艾尔凯在20世纪40年代上半叶把全部精力投入到帮助战争。该公司利用其专业知识为美国海军生产洗涤槽以及餐具和管道设备。在此期间,艾尔凯平均每月为军队运送约10000个沉船。

第二次世界大战后,艾尔凯的工作重心从为上层阶级家庭服务转向新兴的中产阶级。归国军人结婚生子的比例创历史新高,导致婴儿潮一代的出现,由于全国住房短缺,全国各地都出现了郊区。所有这些郊区的新房子都需要水槽,许多房主被不锈钢水槽吸引,因为清理起来很容易。艾尔凯在不锈钢水槽领域已经有了长足的发展,但在1948年,艾尔凯在生产方面取得了突破性进展,并开始生产拉丝不锈钢碗。这一进步使该公司将生产不锈钢碗的成本降低了一半。因此,Elkay成为了住宅水池的领导者。

20世纪50年代加入商界的第三代人

上世纪50年代,卡茨家族的第三代人——路易的儿子、现任董事长兼首席执行官罗恩•卡茨(Ron Katz)——加入了公司。20世纪50年代,艾尔凯开始建立一个庞大的独立销售代表网络,并继续在该领域的创新方面处于领先地位。通过自动化技术的持续进步,艾尔是能够降低生产成本,因此,到1950年代末,它成为世界上最大的不锈钢生产商住宅下沉并于1960年开始建设一个新工厂在大视野出版社,伊利诺斯州,公司总部也将使其在接下来的20年。1979年,艾尔凯将公司的办公室搬到了伊利诺斯州的橡树溪。

Elkay于1969年开始多元化经营,在产品中加入了水冷却器,然后在1976年收购了Cordley/Temprite作为补充。与此同时,艾尔凯保持了作为行业创新者的声誉。1970年,该公司推出了一款三格不锈钢水槽,结果大受欢迎。上世纪70年代,Elkay还通过收购扩大了住宅市场的地域范围和份额。它在北卡罗来纳州的伦伯顿收购了一家工厂,后来更名为埃尔凯南方公司(Elkay Southern Corporation),并在犹他州的奥格登收购了代顿-奥格登公司(Dayton-Ogden Corporation)。

在20世纪80年代,Elkay利用其知名度进入零售市场,这是特别有吸引力的,因为像家得宝和Lowe’s这样的大零售商越来越受欢迎,以迎合不断增长的diy市场。为了服务这些客户,Elkay推出了Neptune品牌的水槽。该公司还对厨房市场的其他方面产生了兴趣。Elkay的美食中心是朝这个方向迈出的一步,它将水槽、垃圾处理、排水板和切菜板组合在一起。上世纪80年代末,艾尔凯开始瞄准橱柜行业,提供配套的产品线,因为市场上有很大比例的人在为新的厨房水槽寻找配套的橱柜。

上世纪90年代初,艾尔凯聘请杰克•埃德尔(Jack Edl)调查高度分散的厨柜市场,并为艾尔凯推荐公司。Edl非常适合这项任务,他曾担任Yorktowne内阁的总统五年,并在Elkay担任营销副总裁六年。第一个推荐Elkay收购的橱柜制造商是Yorktowne,这并不奇怪。约克敦公司位于宾夕法尼亚州红狮市,自1908年以来一直从事马车制造业务。20世纪20年代,随着汽车取代了马,约克敦的注意力转向了中档厨柜,同时也制造了收音机柜,后来转向了电视柜。在20世纪80年代中期,Yorktowne将重心从普通厨柜转移到独立厨房。但经济放缓使约克敦公司在竞争激烈的内阁市场中受到了打击,销售额从1987年的4800万美元下降到1991年的3800万美元。所有权易手,一家风险投资集团从加州家具零售商Wickes Inc.手中收购了这家公司。Elkay在1992年初开始谈判购买,但直到1993年8月才完成交易。

在将Yorktowne纳入旗下仅一个月后,Elkay完成了第二笔内阁收购——明尼苏达州瓦科尼亚(Waconia)的Medallion kitchen,这家公司在过去5年里有4位所有者。和Yorktowne一样,Medallion也经历了最近的挣扎,销售额从1989年的2700万美元下降到1991年的2100万美元。然而,当艾尔凯介入时,大奖章的生意开始反弹。Edl被任命为新成立的Elkay内阁集团的总裁,该集团1995年的总销售额为7500万美元。1996年5月,艾尔凯公司购买了MasterCraft橱柜,进一步增加了其橱柜资产。因此,1996年Elkay以1.65亿美元的销售额成为美国第七大橱柜制造商,这是由Wood & Wood Products确定的。1998年,总部位于俄勒冈州塞勒姆的Westwood Products公司的加入使Elkay名列第四。Westwood更名为Westwood Customers try Inc.,并并入了Medallion业务。

90年代稳步扩张

上世纪90年代,艾尔凯在其他领域也有所发展。Halsey Taylor在1991年被收购,加入了Elkay的饮水机部门。在此期间,该公司也变得国际化。与马来西亚合作伙伴福尔摩萨假肢设备有限公司合作,形成了一个销售和市场运作机构,Elkay Pacific Rim Sdn, Bhd。该公司从马来西亚巴生港(Port Klang)发货,向环太平洋国家分发冷却器和瓶装水。1996年,双方在马来西亚建立了一家新的饮水机制造厂,为合资企业提供服务。Elkay通过收购安大略省的Wessan铅管制造有限公司(Wessan Manufacturing Ltd.)进入了加拿大的水槽市场。公司更名为加拿大艾尔凯。除了水槽的制造和销售,该部门还将分发由Elkay美国公司生产的冷却器、水龙头和饮水机。收购Wessan的交易还带来了马萨诸塞州新贝德福德的Revere Sink Corp.子公司。一年后,也就是1999年5月,Elkay将注意力转向了南方,收购了墨西哥最大的水槽制造商E.B. Tecnica Mexicana,该公司自1962年以来一直在经营。该公司一开始规模很小,每天只生产4个不锈钢水槽,但到1990年,它已经有能力实施增长战略,涉足复合水槽的生产,并在墨西哥各地开设仓库。当Elkay接手后,E.B. Tecnica在墨西哥维持了20个配送中心,并在圣路易斯波托西维持了一个主要的制造工厂。

公司方面:

质量。奉献精神。信任。在Elkay,这些不只是文字;他们代表了我们做生意的方式。
尽管艾尔凯在很多方面都很成功,但在20世纪90年代末,它也并非没有挑战。事实证明,收购韦森就是一个问题。继承下来的工厂充满了陈旧的设备,缺乏现代的制造和质量体系。作为一个整体,Elkay需要一些更新:销售没有增长,而利润率却在下降。而且,不仅仅是加拿大的工厂在采用现代制造方法方面落后于时代。为了帮助重组公司,提高生产效率,提高利润率,艾尔凯聘请了一位新的运营副总裁卡里?伍德(Cary B. Wood),此人在汽车行业有多年的经验。公司现在专注于标准化运营,并尽可能提高效率。Elkay转向了准时生产的生产方式,所以工厂现在生产的是实际订购的产品,而不是公司认为可能销售的产品。这就要求销售、制造和分销紧密合作,这样他们就可以每月一起规划生产和库存需求,从而使公司能够更好地预测客户需求,并顺利度过成本高昂的生产高峰。尽管这不是必需的,Elkay选择成为ISO认证,作为一种方式来灌输进一步的秩序,并确保所有的系统和过程处于最佳状态。
总的来说,Elkay采用了被称为“SQDCP”战略的五个原则。SQDCP的第一个字母代表“安全”。艾尔凯做出了协调一致的努力,以减少员工在事故中损失的工时。从2000年到2002年,在该计划的头三年里,公司取得了巨大的成功,工人索赔减少了80%。下一个原则是“质量”成本,即公司用于返工产品、报废成本和评估成本的金额。在SQDCP的“交付”部分,Elkay将产品的准时交付率从75%提高到了94%。更好的库存和生产计划也降低了“成本”。库存成本降低了30%,同时生产力提高了39%。最后一个元素是“人”。组织中所有级别的员工都参与了SQDCP,他们的参与对项目的成功至关重要。

随着新世纪的开始,艾尔凯的业务不断扩大。2000年,它在伊利诺斯州的Bolingbrook新开了一个10万平方英尺的配送中心,在Elkay提高效率和提高利润率的努力中发挥了重要作用。2001年,该公司成为第一家在医院、学校、公共建筑和工业应用的水槽上安装感应式水龙头的公司。通过Elkay水技术部门的成立,Elkay开始涉足家庭供水和过滤业务。该公司还投资了新的工厂,以确保生产效率。2004年,占地4万平方英尺的奥格登工厂被占地10.6万平方英尺的新工厂取代,2006年,他们计划用一个更大的工厂取代约克敦的红狮工厂,计划在弗吉尼亚州开业。此外,Elkay通过外部手段继续成长。2004年底,它收购了装饰管道产品制造商Phylrich International,这笔交易扩大了Elkay的水龙头系列。

2003年,67岁的董事长兼首席执行长卡茨(Ron Katz)与他的父亲和祖父80多年前创办的公司一起庆祝了自己的50岁生日。尽管卡茨收到了公司的定期邀请,但他并没有表现出卖掉公司或在短期内退休的意愿

feature image

Homebrew: Could not symlink, /usr/local/bin is not writable [closed]

The other answers are correct, as far as they go, but they don’t answer why this issue might be occurring, and how to address that root cause.

Cause

There are two possible causes to this issue:

  1. The homebrew installation was performed with a user other than the one you are currently using. Homebrew expects that only the user that installed it originally would ever want to use it.
  2. You installed some software that writes to /usr/local without using brew. This is the cause brew doctor suggests, if you run it.

Solution

Multiuser Homebrew

If you have multiple user accounts, and you want more than one of them to be able to use brew, you need to run through a few steps, otherwise you will constantly have to change ownership of the Homebrew file structure every time you switch users, and that’s not a great idea.

Detailed instructions can be found online, but the quick answer is this:

  1. Create a group named brew:
    1. Open System preferences
    2. Click Accounts
    3. Click the “+” (unlock first if necessary)
    4. Under New account select Group
    5. enter brew
    6. Click Create Group
  2. Select the brew group, and add the user accounts you want to use brew to it.
  3. change the /usr/local folder group ownership: sudo chgrp -R brew /usr/local
  4. change the permissions to add write to /usr/local as group: sudo chmod -R g+w /usr/local
  5. change homebrew cache directory group: sudo chgrp -R brew /Library/Caches/Homebrew
  6. change the homebrew cache directory permissions: sudo chmod -R g+w /Library/Caches/Homebrew

Single User Homebrew

If you’re not trying to use more than one user with Homebrew, then the solution provided by the other answers, based on the suggestions of brew doctor is probably sufficient:

sudo chown -R $(whoami) /usr/local

sudo chown -R $(whoami) /Library/Caches/Homebrew

Verification

After these steps, brew doctor should report success by any user in the brew group, assuming you’ve logged out and back in to apply the new group memberships (if you went the multiuser route). If you just corrected things for single user homebrew, then logging out and back in shouldn’t be necessary as none of your group memberships have changed.

https://stackoverflow.com/questions/26647412/homebrew-could-not-symlink-usr-local-bin-is-not-writable

feature image

conda使用简介

〇、序

Python是一种面向对象的解释型计算机程序设计语言,其使用,具有跨平台的特点,可以在Linux、macOS以及Windows系统中搭建环境并使用,其编写的代码在不同平台上运行时,几乎不需要做较大的改动,使用者无不受益于它的便捷性。

此外,Python的强大之处在于它的应用领域范围之广,遍及人工智能、科学计算、Web开发、系统运维、大数据及云计算、金融、游戏开发等。实现其强大功能的前提,就是Python具有数量庞大且功能相对完善的标准库和第三方库。通过对库的引用,能够实现对不同领域业务的开发。然而,正是由于库的数量庞大,对于管理这些库以及对库作及时的维护成为既重要但复杂度又高的事情。

一、什么是Anaconda?

1. 简介

Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。

2. 特点

Anaconda具有如下特点:

▪ 开源

▪ 安装过程简单

▪ 高性能使用Python和R语言

▪ 免费的社区支持

其特点的实现主要基于Anaconda拥有的:

▪ conda包

▪ 环境管理器

▪ 1,000+开源库

如果日常工作或学习并不必要使用1,000多个库,那么可以考虑安装Miniconda(下载界面请戳),这里不过多介绍Miniconda的安装及使用。

3. Anaconda、conda、pip、virtualenv的区别

① Anaconda

Anaconda是一个包含180+的科学包及其依赖项的发行版本。其包含的科学包包括:conda, numpy, scipy, ipython notebook等。

② conda

conda是包及其依赖项和环境的管理工具。

▪ 适用语言:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。

▪ 适用平台:Windows, macOS, Linux

▪ 用途:

① 快速安装、运行和升级包及其依赖项。

② 在计算机中便捷地创建、保存、加载和切换环境。

如果你需要的包要求不同版本的Python,你无需切换到不同的环境,因为conda同样是一个环境管理器。仅需要几条命令,你可以创建一个完全独立的环境来运行不同的Python版本,同时继续在你常规的环境中使用你常用的Python版本。——Conda官方网站

▪ conda为Python项目而创造,但可适用于上述的多种语言。

▪ conda包和环境管理器包含于Anaconda的所有版本当中。

③ pip

pip是用于安装和管理软件包的包管理器。

▪ pip编写语言:Python。

▪ Python中默认安装的版本:

① Python 2.7.9及后续版本:默认安装,命令为 pip

② Python 3.4及后续版本:默认安装,命令为 pip3

▪ pip名称的由来:pip采用的是递归缩写进行命名的。其名字被普遍认为来源于2处:

① “Pip installs Packages”(“pip安装包”)

② “Pip installs Python”(“pip安装Python”)

④ virtualenv

virtualenv是用于创建一个独立的Python环境的工具。

▪ 解决问题:

  1. 当一个程序需要使用Python 2.7版本,而另一个程序需要使用Python 3.6版本,如何同时使用这两个程序?如果将所有程序都安装在系统下的默认路径,如:/usr/lib/python2.7/site-packages,当不小心升级了本不该升级的程序时,将会对其他的程序造成影响。
  2. 如果想要安装程序并在程序运行时对其库或库的版本进行修改,都会导致程序的中断。
  3. 在共享主机时,无法在全局 site-packages 目录中安装包。

▪ virtualenv将会为它自己的安装目录创建一个环境,这并不与其他virtualenv环境共享库;同时也可以选择性地不连接已安装的全局库。

⑤ pip 与 conda 比较

→ 依赖项检查

▪ pip:

① 不一定会展示所需其他依赖包。

② 安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。

▪ conda:

① 列出所需其他依赖包。

② 安装包时自动安装其依赖项。

③ 可以便捷地在包的不同版本中自由切换。

→ 环境管理

▪ pip:维护多个环境难度较大。

▪ conda:比较方便地在不同环境之间进行切换,环境管理较为简单。

→ 对系统自带Python的影响

▪ pip:在系统自带Python中包的更新/回退版本/卸载将影响其他程序。

▪ conda:不会影响系统自带Python。

→ 适用语言

▪ pip:仅适用于Python。

▪ conda:适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。

⑥ conda与pip、virtualenv的关系

▪ conda结合了pip和virtualenv的功能。

二、Anaconda的适用平台及安装条件

1. 适用平台

Anaconda可以在以下系统平台中安装和使用:

▪ Windows

▪ macOS

▪ Linux(x86 / Power8)

2. 安装条件

▪ 系统要求:32位或64位系统均可

▪ 下载文件大小:约500MB

▪ 所需空间大小:3GB空间大小(Miniconda仅需400MB空间即可)

三、Anaconda的安装步骤

1. macOS系统安装Anaconda

① 图形界面安装

1. 前往官方下载页面下载。有两个版本可供选择:Python 3.6 和 Python 2.7,我下载的是前者。选择版之后点击“64-Bit Graphical Installer”进行下载。

2. 完成下载之后,双击下载文件,在对话框中“Introduction”、“Read Me”、“License”部分可直接点击下一步

3. “Destination Select”部分选择“Install for me only”并点击下一步。

  • 注意:若有错误提示信息“You cannot install Anaconda in this location”则重新选择“Install for me only”并点击下一步。

4. “Installation Type”部分,可以点击“Change Install Location”来改变安装位置。标准的安装路径是在用户的家目录下。在这一步我没有改变安装位置。若选择默认安装路径,则直接点击“Install”进行安装。

5. 等待“Installation”部分结束,在“Summary”部分若看到“The installation was completed successfully.”则安装成功,直接点击“Close”关闭对话框。

6. 在mac的Launchpad中可以找到名为“Anaconda-Navigator”的图标,点击打开。

7. 若“Anaconda-Navigator”成功启动,则说明真正成功地安装了Anaconda;如果未成功,请务必仔细检查以上安装步骤。

  • 提示:“Anaconda-Navigator”中已经包含“Jupyter Notebook”、“Jupyterlab”、“Qtconsole”和“Spyder”。(图中的“Rstudio”是我后来安装的,但它默认出现在“Anaconda-Navigator”的启动界面,只需要点击“Install”便可安装。)
  • Jupyter Notebook有助于我们编写代码、运行代码以及获取代码的运行结果,特点是可以令我们便捷地为代码及其运行结果添加文档的描述、解释和说明。无论是学习还是工作,Jupyter Notebook都是提高效率和学习、工作质量的利器。具体的使用,可以参见我的另一篇文章:

豆豆:Jupyter Notebook介绍、安装及使用教程​zhuanlan.zhihu.com

图标

8. 完成安装。

② 命令行安装

1. 前往官方下载页面下载。有两个版本可供选择:Python 3.6 和 Python 2.7,我下载的是前者。选择版之后点击“64-Bit Command-Line Installer”进行下载。

2. 完成下载之后,在mac的Launchpad中找到“其他”并打开“终端”。

▫ 安装Python 3.6: bash ~/Downloads/Anaconda3-5.0.1-MacOSX-x86_64.sh

▫ 安装Python 2.7: bash ~/Downloads/Anaconda2-5.0.1-MacOSX-x86_64.sh

  • 注意:
  1. 首词bash也需要输入,无论是否用的Bash shell。
  2. 如果你的下载路径是自定义的,那么把该步骤路径中的 ~/Downloads 替换成你自己的下载路径。
  3. 如果你将第1步下载的 .sh 文件重命名了,那么把该步骤路径中的 Anaconda3-5.0.1-MacOSX-x86_64.sh 或 Anaconda2-5.0.1-MacOSX-x86_64.sh 替换成你重命名后的文件名。

▫ 强烈建议:不要修改文件名。如果重命名,使用英文进行命名。

3. 安装过程中,看到提示“In order to continue the installation process, please review the license agreement.”(“请浏览许可证协议以便继续安装。”),点击“Enter”查看“许可证协议”。

4. 在“许可证协议”界面将屏幕滚动至底,输入“yes”表示同意许可证协议内容。然后进行下一步。

5. 安装过程中,提示“Press Enter to confirm the location, Press CTRL-C to cancel the installation or specify an alternate installation directory.”(“按回车键确认安装路径,按’CTRL-C’取消安装或者指定安装目录。”)如果接受默认安装路径,则会显示 PREFIX=/home/<user>/anaconda<2 or 3> 并且继续安装。安装过程大约需要几分钟的时间。

  • 建议:直接接受默认安装路径。

6. 安装器若提示“Do you wish the installer to prepend the Anaconda install location to PATH in your /home/<user>/.bash_profile ?”(“你希望安装器添加Anaconda安装路径在 /home/<user>/.bash_profile 文件中吗?”),建议输入“yes”。

  • 注意:

① 路径 /home/<user>/.bash_profile 中 <user> 即进入到家目录后你的目录名。

② 如果输入“no”,则需要手动添加路径。添加 export PATH=”/<path to anaconda>/bin:$PATH” 在 .bashrc 或者 .bash_profile 中。其中, <path to anaconda> 替换为你真实的Anaconda安装路径。

7. 当看到“Thank you for installing Anaconda!”则说明已经成功完成安装。

8. 关闭终端,然后再打开终端以使安装后的Anaconda启动。

9. 验证安装结果。可选用以下任意一种方法:

① 在终端中输入命令 condal list ,如果Anaconda被成功安装,则会显示已经安装的包名和版本号。

② 在终端中输入 python 。这条命令将会启动Python交互界面,如果Anaconda被成功安装并且可以运行,则将会在Python版本号的右边显示“Anaconda custom (64-bit)”。退出Python交互界面则输入 exit() 或 quit() 即可。

③ 在终端中输入 anaconda-navigator 。如果Anaconda被成功安装,则Anaconda Navigator的图形界面将会被启动。

2. Windows系统安装Anaconda

1. 前往官方下载页面下载。有两个版本可供选择:Python 3.6 和 Python 2.7,选择版之后根据自己操作系统的情况点击“64-Bit Graphical Installer”或“32-Bit Graphical Installer”进行下载。

2. 完成下载之后,双击下载文件,启动安装程序。

  • 注意:

① 如果在安装过程中遇到任何问题,那么暂时地关闭杀毒软件,并在安装程序完成之后再打开。

② 如果在安装时选择了“为所有用户安装”,则卸载Anaconda然后重新安装,只为“我这个用户”安装。

3. 选择“Next”。

4. 阅读许可证协议条款,然后勾选“I Agree”并进行下一步。

5. 除非是以管理员身份为所有用户安装,否则仅勾选“Just Me”并点击“Next”。

6. 在“Choose Install Location”界面中选择安装Anaconda的目标路径,然后点击“Next”。

  • 注意:

① 目标路径中不能含有空格,同时不能是“unicode”编码。

② 除非被要求以管理员权限安装,否则不要以管理员身份安装。

7. 在“Advanced Installation Options”中不要勾选“Add Anaconda to my PATH environment variable.”(“添加Anaconda至我的环境变量。”)。因为如果勾选,则将会影响其他程序的使用。如果使用Anaconda,则通过打开Anaconda Navigator或者在开始菜单中的“Anaconda Prompt”(类似macOS中的“终端”)中进行使用。

除非你打算使用多个版本的Anaconda或者多个版本的Python,否则便勾选“Register Anaconda as my default Python 3.6”。

然后点击“Install”开始安装。如果想要查看安装细节,则可以点击“Show Details”。

8. 点击“Next”。

9. 进入“Thanks for installing Anaconda!”界面则意味着安装成功,点击“Finish”完成安装。

  • 注意:如果你不想了解“Anaconda云”和“Anaconda支持”,则可以不勾选“Learn more about Anaconda Cloud”和“Learn more about Anaconda Support”。

10. 验证安装结果。可选以下任意方法:

① “开始 → Anaconda3(64-bit)→ Anaconda Navigator”,若可以成功启动Anaconda Navigator则说明安装成功。

② “开始 → Anaconda3(64-bit)→ 右键点击Anaconda Prompt → 以管理员身份运行”,在Anaconda Prompt中输入 conda list ,可以查看已经安装的包名和版本号。若结果可以正常显示,则说明安装成功。

3. Linux系统安装Anaconda

1. 前往官方下载页面下载。有两个版本可供选择:Python 3.6 和 Python 2.7。

2. 启动终端,在终端中输入命令 md5sum /path/filename 或 sha256sum /path/filename

  • 注意:将该步骤命令中的 /path/filename 替换为文件的实际下载路径和文件名。其中,path是路径,filename为文件名。
  • 强烈建议:

① 路径和文件名中不要出现空格或其他特殊字符。

② 路径和文件名最好以英文命名,不要以中文或其他特殊字符命名。

3. 根据Python版本的不同有选择性地在终端输入命令:

▫ Python 3.6: bash ~/Downloads/Anaconda3-5.0.1-Linux-x86_64.sh

▫ Python 2.7: bash ~/Downloads/Anaconda2-5.0.1-Linux-x86_64.sh

  • 注意:

① 首词bash也需要输入,无论是否用的Bash shell。

② 如果你的下载路径是自定义的,那么把该步骤路径中的 ~/Downloads 替换成你自己的下载路径。

③ 除非被要求使用root权限,否则均选择“Install Anaconda as a user”。

4. 安装过程中,看到提示“In order to continue the installation process, please review the license agreement.”(“请浏览许可证协议以便继续安装。”),点击“Enter”查看“许可证协议”。

5. 在“许可证协议”界面将屏幕滚动至底,输入“yes”表示同意许可证协议内容。然后进行下一步。

6. 安装过程中,提示“Press Enter to accept the default install location, CTRL-C to cancel the installation or specify an alternate installation directory.”(“按回车键确认安装路径,按’CTRL-C’取消安装或者指定安装目录。”)如果接受默认安装路径,则会显示 PREFIX=/home/<user>/anaconda<2 or 3> 并且继续安装。安装过程大约需要几分钟的时间。

  • 建议:直接接受默认安装路径。

7. 安装器若提示“Do you wish the installer to prepend the Anaconda<2 or 3> install location to PATH in your /home/<user>/.bashrc ?”(“你希望安装器添加Anaconda安装路径在 /home/<user>/.bashrc 文件中吗?”),建议输入“yes”。

  • 注意:

① 路径 /home/<user>/.bash_rc 中 “<user>” 即进入到家目录后你的目录名。

② 如果输入“no”,则需要手动添加路径,否则conda将无法正常运行。

8. 当看到“Thank you for installing Anaconda<2 or 3>!”则说明已经成功完成安装。

9. 关闭终端,然后再打开终端以使安装后的Anaconda启动。或者直接在终端中输入 source ~/.bashrc 也可完成启动。

10. 验证安装结果。可选用以下任意一种方法:

① 在终端中输入命令 condal list ,如果Anaconda被成功安装,则会显示已经安装的包名和版本号。

② 在终端中输入 python 。这条命令将会启动Python交互界面,如果Anaconda被成功安装并且可以运行,则将会在Python版本号的右边显示“Anaconda custom (64-bit)”。退出Python交互界面则输入 exit() 或 quit() 即可。

③ 在终端中输入 anaconda-navigator 。如果Anaconda被成功安装,则Anaconda Navigator将会被启动。

四、管理conda

0. 写在前面

接下来均是以命令行模式进行介绍,Windows用户请打开“Anaconda Prompt”;macOS和Linux用户请打开“Terminal”(“终端”)进行操作。

1. 验证conda已被安装

conda --version

终端上将会以 conda 版本号 的形式显示当前安装conda的版本号。如: conda 3.11.0

  • 注意:如果出现错误信息,则需核实是否出现以下情况:

① 使用的用户是否是安装Anaconda时的账户。

② 是否在安装Anaconda之后重启了终端。

2. 更新conda至最新版本

conda update conda

执行命令后,conda将会对版本进行比较并列出可以升级的版本。同时,也会告知用户其他相关包也会升级到相应版本。

当较新的版本可以用于升级时,终端会显示 Proceed ([y]/n)? ,此时输入 y 即可进行升级。

3. 查看conda帮助信息

conda --help

conda -h

4. 卸载conda

① Linux 或 macOS

rm -rf ~/anaconda2

rm -rf ~/anaconda3

即删除Anaconda的安装目录。根据安装的Anaconda版本选择相应的卸载命令。

② Windows

控制面板 → 添加或删除程序 → 选择“Python X.X (Anaconda)” → 点击“删除程序”
  • 注意:

① Python X.X:即Python的版本,如:Python 3.6。

② Windows 10的删除有所不同。

五、管理环境

0. 写在前面

接下来均是以命令行模式进行介绍,Windows用户请打开“Anaconda Prompt”;macOS和Linux用户请打开“Terminal”(“终端”)进行操作。

1. 创建新环境

conda create --name <env_name> <package_names>
  • 注意:

▫ <env_name> 即创建的环境名。建议以英文命名,且不加空格,名称两边不加尖括号“<>”。

▫ <package_names> 即安装在环境中的包名。名称两边不加尖括号“<>”。

① 如果要安装指定的版本号,则只需要在包名后面以 = 和版本号的形式执行。如: conda create –name python2 python=2.7 ,即创建一个名为“python2”的环境,环境中安装版本为2.7的python。

② 如果要在新创建的环境中创建多个包,则直接在 <package_names> 后以空格隔开,添加多个包名即可。如: conda create -n python3 python=3.5 numpy pandas ,即创建一个名为“python3”的环境,环境中安装版本为3.5的python,同时也安装了numpy和pandas。

▫ –name 同样可以替换为 -n 。

  • 提示:默认情况下,新创建的环境将会被保存在 /Users/<user_name>/anaconda3/env 目录下,其中, <user_name> 为当前用户的用户名。

2. 切换环境

① Linux 或 macOS

source activate <env_name>

② Windows

activate <env_name>

③ 提示

  1. 如果创建环境后安装Python时没有指定Python的版本,那么将会安装与Anaconda版本相同的Python版本,即如果安装Anaconda第2版,则会自动安装Python 2.x;如果安装Anaconda第3版,则会自动安装Python 3.x。
  2. 当成功切换环境之后,在该行行首将以“(env_name)”或“[env_name]”开头。其中,“env_name”为切换到的环境名。如:在macOS系统中执行 source active python2 ,即切换至名为“python2”的环境,则行首将会以(python2)开头。

3. 退出环境至root

① Linux 或 macOS

source deactivate

② Windows

deactivate

③ 提示

当执行退出当前环境,回到root环境命令后,原本行首以“(env_name)”或“[env_name]”开头的字符将不再显示。

4. 显示已创建环境

conda info --envs

conda info -e

conda env list
  • 例如:

结果中星号“*”所在行即为当前所在环境。macOS系统中默认创建的环境名为“base”。

5. 复制环境

conda create --name <new_env_name> --clone <copied_env_name>
  • 注意:

 <copied_env_name> 即为被复制/克隆环境名。环境名两边不加尖括号“<>”。

 <new_env_name> 即为复制之后新环境的名称。环境名两边不加尖括号“<>”。

 conda create –name py2 –clone python2 ,即为克隆名为“python2”的环境,克隆后的新环境名为“py2”。此时,环境中将同时存在“python2”和“py2”环境,且两个环境的配置相同。

6. 删除环境

conda remove --name <env_name> --all
  • 注意: <env_name> 为被删除环境的名称。环境名两边不加尖括号“<>”。

六、管理包

1. 查找可供安装的包版本

① 精确查找

conda search --full-name <package_full_name>
  • 注意:

 –full-name 为精确查找的参数。

 <package_full_name> 是被查找包的全名。包名两边不加尖括号“<>”。

  • 例如: conda search –full-name python 即查找全名为“python”的包有哪些版本可供安装。

② 模糊查找

conda search <text>
  • 注意: <text> 是查找含有此字段的包名。此字段两边不加尖括号“<>”。
  • 例如: conda search py 即查找含有“py”字段的包,有哪些版本可供安装。

2. 获取当前环境中已安装的包信息

conda list

执行上述命令后将在终端显示当前环境已安装包的包名及其版本号。

3. 安装包

① 在指定环境中安装包

conda install --name <env_name> <package_name>
  • 注意:

① <env_name> 即将包安装的指定环境名。环境名两边不加尖括号“<>”。

② <package_name> 即要安装的包名。包名两边不加尖括号“<>”。

  • 例如: conda install –name python2 pandas 即在名为“python2”的环境中安装pandas包。

② 在当前环境中安装包

conda install <package_name>
  • 注意:

 <package_name> 即要安装的包名。包名两边不加尖括号“<>”。

② 执行命令后在当前环境中安装包。

  • 例如: conda install pandas 即在当前环境中安装pandas包。

③ 使用pip安装包

→ 使用场景

当使用 conda install 无法进行安装时,可以使用pip进行安装。例如:see包。

→ 命令

pip install <package_name>
  • 注意: <package_name> 为指定安装包的名称。包名两边不加尖括号“<>”。
  • 如: pip install see 即安装see包。

→ 注意

  1. pip只是包管理器,无法对环境进行管理。因此如果想在指定环境中使用pip进行安装包,则需要先切换到指定环境中,再使用pip命令安装包。
  2. pip无法更新python,因为pip并不将python视为包。
  3. pip可以安装一些conda无法安装的包;conda也可以安装一些pip无法安装的包。因此当使用一种命令无法安装包时,可以尝试用另一种命令。

④ 从http://Anaconda.org安装包

→ 使用场景

当使用 conda install 无法进行安装时,可以考虑从http://Anaconda.org中获取安装包的命令,并进行安装。

→ 注意

1. 从http://Anaconda.org安装包时,无需注册。

2. 在当前环境中安装来自于http://Anaconda.org的包时,需要通过输入要安装的包在http://Anaconda.org中的路径作为获取途径(channel)。查询路径的方式如下:

① 在浏览器中输入:http://anaconda.org,或直接点击Anaconda Cloud

② 在新页面“Anaconda Cloud”的上方搜索框中输入要安装的包名,然后点击右边“放大镜”标志。

3. 搜索结果中有数以千计的包可供选择,此时点击“Downloads”可根据下载量进行排序,最上面的为下载最多的包。(图中以搜索bottleneck包为例)

4. 选择满足需求的包或下载量最多的包,点击包名。

5. 复制“To install this package with conda run:”下方的命令,并粘贴在终端中执行。

6. 完成安装。

4. 卸载包

① 卸载指定环境中的包

conda remove --name <env_name> <package_name>
  • 注意:

① <env_name> 即卸载包所在指定环境的名称。环境名两边不加尖括号“<>”。

 <package_name> 即要卸载包的名称。包名两边不加尖括号“<>”。

  • 例如: conda remove –name python2 pandas 即卸载名为“python2”中的pandas包。

② 卸载当前环境中的包

conda remove <package_name>
  • 注意:

 <package_name> 即要卸载包的名称。包名两边不加尖括号“<>”。

② 执行命令后即在当前环境中卸载指定包。

  • 例如: conda remove pandas 即在当前环境中卸载pandas包。

5. 更新包

① 更新所有包

conda update --all

conda upgrade --all
  • 建议:在安装Anaconda之后执行上述命令更新Anaconda中的所有包至最新版本,便于使用。

② 更新指定包

conda update <package_name>

conda upgrade <package_name>
  • 注意:

 <package_name> 为指定更新的包名。包名两边不加尖括号“<>”。

② 更新多个指定包,则包名以空格隔开,向后排列。如: conda update pandas numpy matplotlib 即更新pandas、numpy、matplotlib包。

https://zhuanlan.zhihu.com/p/32925500

feature image

The bottle needs the Xcode CLT to be installed.

xcode-select –install

Warning: Building gcc from source:

  The bottle needs the Xcode CLT to be installed.

==> Downloading https://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.xz

Already downloaded: /Users/Tab/Library/Caches/Homebrew/downloads/d826388c1d62d3837abf5966bfcb52111c0fea536be81417ab4718ba089422f1–gcc-9.2.0.tar.xz

^C^CError: An exception occurred within a child process:

  Errno::ENOTEMPTY: Directory not empty @ dir_s_rmdir – /private/tmp/d20191230-8175-x8pgbk

[email protected] include % 

[email protected] include % 

[email protected] include % brew doctor

Your system is ready to brew.

[email protected] include % xcode-select –install

xcode-select: note: install requested for command line developer tools

[email protected] include % 

feature image

conda link to zsh

If anaconda is fully updated, a simple “conda init zsh” should work. Navigate into the anaconda3 folder using

cd ~/miniconda3/

of course replacing “/path/to/anaconda/” with “~/anaconda3” or “/anaconda3” or wherever the “anaconda3” folder is kept.

To make sure it’s updated, run

./bin/conda update –prefix . anaconda

After this, running

./bin/conda init zsh