用 PyCharm + Anaconda 做科学计算时正确的包管理逻辑应该是怎么样的?

2019-01-22 17:49:49 +08:00
 capbone

之前用 Python 做过几个图像处理相关的项目,当时在 PyCharm 中没有特别关注解释器的选择,一般都是用 conda 创建一个 new env 然后再在里面安装所需的包。但是今天无意中看了一下 Anaconda 的安装目录,里面 envs 文件夹下基本每个子文件夹都有 1G 多大,而且每个项目的 Lib\site-packages 目录下基本都包含了重复的包,比如 numpy、matplotlib 这些,感觉既浪费硬盘空间,也让每个项目变得很臃肿。

我想请问下,如果假设我创建的所有项目都是基于同一个 Python 版本的,是否存在一种解决方案,能够在让所有项目共享一部分常用的包(比如 numpy、scipy 等等)的基础上,又允许为每个项目单独指定一些包?举个例子,我之前在 Anaconda prompt 中安装了 tensorflow,但是最近我想新建一个项目用来练手 pytorch,能不能让这个项目中不再出现 tensorflow 这个包?

PS:还有一个问题,PyCharm 的 Setting -> Project -> Project Interpreter 中,最右边有一个 Anaconda logo 的绿色小圈圈,写着 Use Conda Package Manager,这个到底应不应该勾选呢?

2797 次点击
所在节点    Python
6 条回复
SeaRecluse
2019-01-22 17:58:40 +08:00
环境隔离一般是针对不同软件版本带来的问题的吧(比如 py2,py3 ),既然你基础环境相同,就直接 conda install 呗
clavichord93
2019-01-22 19:12:13 +08:00
我选择 conda 装 env 然后在 env 里面用 pip 装包
Rubbly
2019-01-22 19:28:52 +08:00
由于 python 不同包之间的依赖关系,anaconda 并不支持已安装包的共享,只是会利用一些 cache 来省去二次下载的过程或者初始环境时的 clone 功能。
一开始用 Anaconda 的时候,我也是习惯一个框架一个环境,后来磁盘空间实在窘迫,就还是按照 python 版本划分了两个子环境,用到现在也觉得没必要再细分了。另外 Use Conda Package Manager,这个应该对应的是这个 button 上面的那个+号之类的功能吧... 无关紧要了,反正也是命令行安装。
capbone
2019-01-23 07:57:21 +08:00
@SeaRecluse @clavichord93 @Rubbly 呃... 你们都是用命令行来装包吗?我是直接在 PyCharm 里面用那个 GUI 来搜索然后安装,这样是不是有什么问题?
@Rubbly 所有项目都共享一个环境的话,时间长了会导致堆积了很多不必要的包吧,而且版本间可能也会有些冲突。关键是我使用的其中一台机器配置不高,每次打开 PyCharm 非常慢,indexing 的时间非常长,我担心共用一个环境的话可能会拖慢 PyCharm 更多...
SeaRecluse
2019-01-23 09:09:36 +08:00
@capbone sublime text/vscode 欢迎你😂
Rubbly
2019-01-23 12:45:39 +08:00
@capbone 因为经常会在服务器上操作,所以一切环境配置的事都很少用图形页面去做了。至于 PyCharm,根据我的经验,只有在对环境进行更改后,才会进行一次 re-indexing,平时打开应该只是读取了某个 table ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/529547

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX