环境配置

3.7k words
阅读

记录一下我在配置各种环境的时候遇到的问题,以便未来再次遇到的时候能够快速解决。

tensorflow

安装tensorflow的时候,pip 找不到适配的 tensorflow 版本。

1
2
3
4
5
6
7
8
smiling@Smiling:~/csdiy/CS50_AI/Project5/traffic$ pip3 install -r requirements.txt

Defaulting to user installation because normal site-packages is not writeable
Collecting opencv-python (from -r requirements.txt (line 1))
Using cached opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (20 kB)
Requirement already satisfied: scikit-learn in /home/smiling/.local/lib/python3.13/site-packages (from -r requirements.txt (line 2)) (1.6.1)
ERROR: Could not find a version that satisfies the requirement tensorflow (from versions: none)
ERROR: No matching distribution found for tensorflow

当使用

1
python --version

的时候以为自己已经调到了正确的python版本(这里我想从3.13调成3.12版本),但是实际上使用

1
pip3 -V

就可能发现,pip3还是用的python3.13

所以需要调整,解决方式:

创建并激活 Python 3.12 的虚拟环境

使用 venv 来创建一个基于 Python 3.12 的虚拟环境:

1
python3.12 -m venv myenv312

激活该虚拟环境:

  • 在 Linux 系统上:
1
source myenv312/bin/activate
  • 在Windows系统上:
1
myenv312\Scripts\activate

然后

1
pip3 -V

确保显示的是 Python 3.12 版本。

之后再使用

1
pip3 install tensorflow

就可以了。

之后在其他地方使用如果还出现问题,可能要再创建一个虚拟环境,使得python版本和tensorflow匹配。

之后再进入已创建的基于 Python 3.12 的 myenv312 虚拟环境,操作如下:

打开终端,进入到包含虚拟环境目录(myenv312 所在目录),执行命令:

1
source myenv312/bin/activate

激活后,终端命令行开头会显示虚拟环境名称,如 (myenv312) user@hostname:~/your_directory$ ,表示已成功进入虚拟环境。

pip和python

有时候在安装了一个库之后发现还是识别不到,很可能是如下问题:

1
2
3
4
smiling@Smiling:~/physics-raudio$ pip3 --version
pip 25.1.1 from /home/smiling/.local/lib/python3.13/site-packages/pip (python 3.13)
smiling@Smiling:~/physics-raudio$ python3 --version
Python 3.8.10

使用的pip和python版本不一样,导致无法识别

1
2
smiling@Smiling:~/physics-raudio$ sudo rm /usr/bin/python3
smiling@Smiling:~/physics-raudio$ sudo ln -s /usr/bin/python3.13 /usr/bin/python3

之后再检查应该就会发现python调到了正确的版本。

但是好像这样的方法ai不推荐。建议下次有空的话还是仔细探索一下怎么使用

conda

在折腾的时候,学到了一个新的东西:conda

Conda是一个开源的包管理系统和环境管理系统,主要用于Python、R、Ruby、Lua、Scala、Java、JavaScript、C/C++、FORTRAN等多种语言。它可以帮助你轻松地安装、运行和更新包及其依赖项,并且可以为不同的项目创建独立的运行环境,避免不同项目间的软件版本冲突。


Conda在WSL中的使用

WSL (Windows Subsystem for Linux) 中使用Conda和在常规的Linux环境中非常相似。以下是简要步骤:

  1. 在WSL中安装Miniconda或Anaconda

    • Miniconda:这是一个Conda的轻量级版本,只包含Conda和Python。推荐新手使用,因为它更小、安装更快。
    • Anaconda:这是一个更全面的版本,包含了Conda、Python以及大量科学计算和数据分析常用的库。
    • 已经安装好了,这里从略。
  2. 基本Conda命令

    • 创建新环境

      1
      conda create --name myenv python=3.9

      这会创建一个名为

      1
      myenv

      的环境,并安装Python 3.9。

    • 激活环境

      1
      conda activate myenv

      激活后,你在这个环境中安装的包就不会影响到其他环境。

    • 安装包

      1
      conda install numpy pandas

      这会在当前激活的环境中安装NumPy和Pandas。

    • 退出环境

      1
      conda deactivate
    • 查看所有环境

      1
      conda env list
    • 删除环境

      1
      conda remove --name myenv --all

使用Conda的好处

  • 环境隔离:这是Conda最大的优势之一。不同的项目可能需要不同版本的Python或不同的库版本。Conda允许你为每个项目创建独立的虚拟环境,确保它们互不干扰,避免“DLL Hell”或依赖冲突。
  • 跨平台兼容性:Conda支持Windows、macOS和Linux,这意味着你可以在不同的操作系统上使用相同的环境管理工具和流程。
  • 包管理:Conda不仅可以管理Python包,还可以管理非Python包(如MKL、CUDA等),这使得它在科学计算领域尤其强大。它还能自动处理复杂的依赖关系。
  • 易于分享和复制环境:你可以轻松地将一个环境的配置导出为YAML文件,然后其他人可以使用这个文件来复现完全相同的环境,这对于团队协作和项目部署非常有用。
  • 版本控制:Conda可以让你指定安装特定版本的包,方便项目的版本控制和回溯。

总的来说,Conda是数据科学家、开发者和研究人员管理其软件环境和依赖的强大工具,尤其是在处理复杂的项目或需要多个不同软件配置时。

conda问题

在conda环境内,使用pip install的时候安装成功了,但是在运行程序的时候却显示没有这个包,为什么呢?

这是因为,pip可能不是使用的和conda一样的专用工具箱:

1
2
3
4
(conda) smiling@Smiling:~$ which python
/home/smiling/miniconda3/envs/zhihu2Mark/bin/python
(conda) smiling@Smiling:~$ which pip
/home/smiling/.local/bin/pip

如果是一样的工具箱,pip输出的应该也是相似路径下的内容。

解决方法:

1
python -m pip install xxx

或者

1
python -m pip install -r requirements.txt

这个命令的意思是:“python,请你用模块(-m)的方式运行 pip,然后安装某个包”。这可以保证 pythonpip 绝对是“原配”的一对。

之后如何使用?

进入环境:

1
conda activate gomoku_env

退出环境:

1
conda deactivate

列出所有环境:

1
conda env list

删除不用的环境

1
conda env list

对于确定不再需要的环境,使用以下命令进行删除。

1
conda env remove --name <your_env_name>

清理 Conda 缓存。

1
conda clean --all

代码行间距

创建一个 .clang-format 文件,里面写:

1
IndentWidth: 4

Java安装

目前安装了JDK21和11两个版本,可以通过

1
java -version

检查目前使用的运行版本。

用下面代码

1
javac -version

检查java编译器版本。

管理多个 Java 版本

如果你因为项目需要安装了多个版本的 Java,你可以使用 update-alternatives 工具来轻松切换默认使用的版本。

  1. 配置默认的 java 命令:

    1
    sudo update-alternatives --config java
  2. 配置默认的 javac 命令:

    1
    sudo update-alternatives --config javac

执行命令后,系统会列出所有已安装的 Java 版本,并提示你输入数字来选择一个作为系统默认版本。

现在应该用的是21版本。

Comments