Python中如何正确使用PyCharm + Anaconda进行科学计算的包管理?

之前用 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,这个到底应不应该勾选呢?


Python中如何正确使用PyCharm + Anaconda进行科学计算的包管理?

7 回复

环境隔离一般是针对不同软件版本带来的问题的吧(比如 py2,py3 ),既然你基础环境相同,就直接 conda install 呗


在PyCharm里用Anaconda做科学计算包管理,核心就两步:创建环境,然后在PyCharm里选对解释器。

1. 创建Conda环境 打开Anaconda Prompt或终端,创建一个独立环境,比如叫my_science_env,并安装基础包:

conda create -n my_science_env python=3.9 numpy pandas matplotlib scikit-learn jupyter
conda activate my_science_env

2. 在PyCharm中配置

  • 打开PyCharm,进入 File > Settings > Project: [你的项目名] > Python Interpreter
  • 点击右上角的齿轮图标,选择 Add...
  • 在左侧选择 Conda Environment
  • 选择 Existing environment,然后在 Interpreter 路径里,找到你刚创建的Conda环境。
    • Windows通常路径像:C:\Users\你的用户名\anaconda3\envs\my_science_env\python.exe
    • macOS/Linux通常路径像:/home/你的用户名/anaconda3/envs/my_science_env/bin/python
  • 点击 OK。PyCharm会索引一会儿,之后项目就会用这个环境里的所有包了。

以后装包 最好在终端用 conda install 包名 给这个环境装,或者在PyCharm的Python Interpreter界面点 + 号搜索安装。别混用 pipconda 装同一个包,容易乱。

关键点 一个项目一个独立Conda环境,在PyCharm里正确指向它,别用系统Python。

总结:用Conda创建独立环境,在PyCharm里选它当解释器。

我选择 conda 装 env 然后在 env 里面用 pip 装包

由于 python 不同包之间的依赖关系,anaconda 并不支持已安装包的共享,只是会利用一些 cache 来省去二次下载的过程或者初始环境时的 clone 功能。
一开始用 Anaconda 的时候,我也是习惯一个框架一个环境,后来磁盘空间实在窘迫,就还是按照 python 版本划分了两个子环境,用到现在也觉得没必要再细分了。另外 Use Conda Package Manager,这个应该对应的是这个 button 上面的那个+号之类的功能吧… 无关紧要了,反正也是命令行安装。

呃… 你们都是用命令行来装包吗?我是直接在 PyCharm 里面用那个 GUI 来搜索然后安装,这样是不是有什么问题?
所有项目都共享一个环境的话,时间长了会导致堆积了很多不必要的包吧,而且版本间可能也会有些冲突。关键是我使用的其中一台机器配置不高,每次打开 PyCharm 非常慢,indexing 的时间非常长,我担心共用一个环境的话可能会拖慢 PyCharm 更多…

sublime text/vscode 欢迎你😂

因为经常会在服务器上操作,所以一切环境配置的事都很少用图形页面去做了。至于 PyCharm,根据我的经验,只有在对环境进行更改后,才会进行一次 re-indexing,平时打开应该只是读取了某个 table ?

回到顶部