VSCode配置python项目

一、项目的目录结构

推荐的 Python 项目目录结构

根目录

* README.md:项目描述、安装说明和用法
* requirements.txt:项目依赖项 (freeze < requirements.txt 生成;install -r .vscode/requirements.txt 安装)
* .gitignore:用于版本控制的忽略文件

源代码目录

*__init__.py:空文件,指示目录为 Python 包
main.py:程序的入口点
*其他 Python 源文件

测试目录

tests/:测试用例
conftest.py:测试固定装置

文档目录

docs/:项目文档

数据目录

data/:项目数据(例如,数据集、配置文件)

其他目录(可选

bin/:可执行文件
logs/:日志文件
scripts/:实用脚本
venv/:虚拟环境(如果使用)

其他注意事项

* 将相关文件分组到子目录中。
* 使用有意义的目录和文件名。
* 保持目录结构一致且易于导航。
* 考虑使用版本控制系统(例如 Git)来跟踪更改。
* 根据需要调整目录结构以满足特定项目的需要。

**示例目录结构**


my_project/
├── README.md
├── requirements.txt
├── .gitignore
├── src/
│ ├── __init__.py
│ ├── main.py
│ ├── other_module.py
├── tests/
│ ├── __init__.py
│ ├── test_main.py
├── docs/
│ ├── index.md
├── data/
│ ├── dataset.csv
├── bin/
│ ├── my_script.py
├── logs/
│ ├── my_log.txt
└── venv/
├── bin/
├── include/
├── lib/
└── pyvenv.cfg

 

二、虚拟环境配置

venv(虚拟环境)是 Python 中用于管理项目特定依赖项的工具。它允许您在隔离的环境中安装和管理 Python 包,而不会影响系统范围的安装。

venv 的优点:

隔离依赖项:每个 venv 都有自己的依赖项集,因此您可以为不同的项目使用不同的 Python 版本和包版本。
避免冲突:venv 防止不同项目之间的依赖项冲突,因为它们在隔离的环境中运行。
可移植性:您可以轻松地将 venv 连同项目一起分发,而无需担心依赖项兼容性问题。
易于管理:venv 易于创建、激活和删除,使您可以轻松地管理项目依赖项。

如何使用 venv:

1. **创建 venv:**使用 `python -m venv` 命令创建虚拟环境。例如:

```
python -m venv my_venv
```

2. **激活 venv:**使用以下命令激活 venv:

Windows:`my_venv\Scripts\activate`
macOS/Linux:`source my_venv/bin/activate`

3. **安装依赖项:**在激活的 venv 中,使用 `pip` 安装项目依赖项。例如:


pip install -r requirements.txt

4. 退出 venv:使用 `deactivate` 命令退出虚拟环境。

venv 的替代方案:

conda:一个更全面的环境管理系统,用于 Python 和其他语言。
pipx:用于在用户范围内安装和管理 Python 包的工具。
Docker:用于创建隔离的、可重复的环境的容器化平台。

何时使用 venv:

venv 对于以下情况非常有用:

* 当您需要为不同的项目使用不同的 Python 版本或包版本时。
* 当您希望避免依赖项冲突时。
* 当您需要在隔离的环境中测试代码时。
* 当您需要分发项目及其依赖项时。

三、.vscode设置

**.vscode** 目录是 Visual Studio Code (VS Code) 用于存储工作区特定设置和扩展配置的目录。它通常位于项目根目录中。

要配置 .vscode,您可以创建或编辑以下文件:

**settings.json**

* 包含用户首选项和 VS Code 设置。
* 例如,您可以配置主题、字体大小、键绑定和扩展设置。

**launch.json**

* 定义用于调试应用程序的启动配置。
* 例如,您可以指定要启动的脚本、调试器类型和断点。

**tasks.json**

* 定义用于自动化任务的构建任务。
* 例如,您可以配置 linting、测试和部署任务。

**extensions.json**

* 列出已安装的扩展及其设置。
* 例如,您可以禁用某些扩展或配置扩展的特定设置。

**keybindings.json**

* 定义自定义键盘快捷键。
* 例如,您可以创建自定义快捷键来触发命令或运行代码片段。

**snippets/**

* 存储代码片段,以便快速插入到编辑器中。
* 例如,您可以创建代码片段以生成常见的代码结构或函数。

**示例 .vscode 目录结构:**

```
.vscode/
├── settings.json
├── launch.json
├── tasks.json
├── extensions.json
├── keybindings.json
└── snippets/
├── my_snippet.json
```

**配置提示:**

* 使用注释来记录您的配置设置。
* 定期备份您的 .vscode 目录,以防丢失数据。
* 探索 VS Code Marketplace 以查找有用的扩展来增强您的开发体验。
* 查看 VS Code 文档以获取有关特定配置选项的更多信息。

**其他注意事项:**

* .vscode 目录通常被版本控制系统(例如 Git)忽略。
* 您可以通过在 VS Code 中转到“文件”>“首选项”>“设置”来打开 .vscode 目录。
* 您还可以使用“命令面板”(Ctrl/Cmd + Shift + P)来搜索和编辑 .vscode 中的文件。

四、项目内人员扩展的共享

在 VSCode 的 `.vscode/extensions.json` 文件中,推荐的扩展只能指定扩展的标识符,而不能指定具体的版本。VSCode 会自动安装最新版本的推荐扩展。

如果你确实需要指定扩展的具体版本,可以考虑以下替代方案:

### 1. 使用 `devcontainer.json` 文件

如果你使用 VSCode 的 Dev Containers 特性,可以在 `devcontainer.json` 文件中指定扩展的具体版本。

#### 示例:

```json
{
"name": "My Project Dev Container",
"image": "mcr.microsoft.com/vscode/devcontainers/python:3.9",
"extensions": [
"ms-python.python@2021.5.842923320",
"dbaeumer.vscode-eslint@2.1.8",
"esbenp.prettier-vscode@5.9.3"
]
}
```

### 2. 提供安装脚本

你可以编写一个脚本来安装指定版本的扩展。以下是一个示例脚本,使用 `code` 命令行工具安装特定版本的扩展:

#### 示例:

创建一个名为 `install-extensions.sh` 的脚本文件:

```sh
#!/bin/bash

# List of extensions to install with specific versions
extensions=(
"ms-python.python@2021.5.842923320"
"dbaeumer.vscode-eslint@2.1.8"
"esbenp.prettier-vscode@5.9.3"
)

# Install each extension
for extension in "${extensions[@]}"; do
code --install-extension $extension
done
```

确保脚本有执行权限:

```sh
chmod +x install-extensions.sh
```

然后其他人可以运行这个脚本来安装指定版本的扩展:

```sh
./install-extensions.sh
```

### 总结

虽然 `.vscode/extensions.json` 文件不支持指定扩展版本,但你可以通过使用 `devcontainer.json` 文件或者提供一个安装脚本来实现安装特定版本的扩展。这些方法可以确保团队成员使用一致的扩展版本。

五、虚拟环境

 

在VS Code中可以使用多种Python虚拟环境来管理项目依赖。以下是常用的几种虚拟环境及其使用方法:

### 1. `venv`

`venv`是Python标准库中的模块,用于创建轻量级的虚拟环境。

#### 创建虚拟环境:
```sh
python -m venv venv
```

#### 激活虚拟环境:
- **Windows**:
```sh
.\venv\Scripts\activate
```
- **Linux/Mac**:
```sh
source venv/bin/activate
```

#### 在VS Code中使用:
1. 打开VS Code。
2. 按`Ctrl+Shift+P`(Windows/Linux)或`Cmd+Shift+P`(Mac)打开命令面板。
3. 输入并选择`Python: Select Interpreter`。
4. 选择刚创建的虚拟环境(通常路径会包含`venv`)。

### 2. `virtualenv`

`virtualenv`是一个第三方库,提供了更多功能和兼容性选项。

#### 安装`virtualenv`:
```sh
pip install virtualenv
```

#### 创建虚拟环境:
```sh
virtualenv venv
```

#### 激活虚拟环境:
- **Windows**:
```sh
.\venv\Scripts\activate
```
- **Linux/Mac**:
```sh
source venv/bin/activate
```

#### 在VS Code中使用:
与`venv`相同,选择虚拟环境作为解释器。

### 3. `conda`

`conda`是一个开源包管理系统和环境管理系统,广泛用于数据科学和机器学习项目。

#### 安装`conda`:
下载并安装Anaconda或Miniconda。

#### 创建虚拟环境:
```sh
conda create --name myenv
```

#### 激活虚拟环境:
```sh
conda activate myenv
```

#### 在VS Code中使用:
1. 打开VS Code。
2. 按`Ctrl+Shift+P`(Windows/Linux)或`Cmd+Shift+P`(Mac)打开命令面板。
3. 输入并选择`Python: Select Interpreter`。
4. 选择刚创建的`conda`环境。

### 4. `pipenv`

`pipenv`是一个用于管理Python项目依赖的工具,结合了`Pipfile`和虚拟环境的功能。

#### 安装`pipenv`:
```sh
pip install pipenv
```

#### 创建和激活虚拟环境:
```sh
pipenv install
pipenv shell
```

#### 在VS Code中使用:
1. 打开VS Code。
2. 按`Ctrl+Shift+P`(Windows/Linux)或`Cmd+Shift+P`(Mac)打开命令面板。
3. 输入并选择`Python: Select Interpreter`。
4. 选择`pipenv`的虚拟环境(路径通常包含`.venv`)。

### 5. `pyenv` + `pyenv-virtualenv`

`pyenv`是一个Python版本管理工具,`pyenv-virtualenv`是其插件,用于创建虚拟环境。

#### 安装`pyenv`和`pyenv-virtualenv`:
根据操作系统不同,安装步骤略有不同,可以参考[pyenv安装指南](https://github.com/pyenv/pyenv)。

#### 创建虚拟环境:
```sh
pyenv install 3.8.10 # 安装特定版本的Python
pyenv virtualenv 3.8.10 myenv
```

#### 激活虚拟环境:
```sh
pyenv activate myenv
```

#### 在VS Code中使用:
1. 打开VS Code。
2. 按`Ctrl+Shift+P`(Windows/Linux)或`Cmd+Shift+P`(Mac)打开命令面板。
3. 输入并选择`Python: Select Interpreter`。
4. 选择`pyenv-virtualenv`的虚拟环境。

### 总结

无论使用哪种虚拟环境,确保在VS Code中选择正确的Python解释器是关键。通过上述步骤,你可以轻松在VS Code中使用各种Python虚拟环境来管理项目依赖。

六、其他依赖管理

使用requirements.txt描述,使用任务等进行管理安装

使用.sh脚本安装(windows下运行.bat)

 

posted @ 2024-08-21 19:40  卖雨伞的小男孩  阅读(83)  评论(0编辑  收藏  举报