VSCode配置python專案

卖雨伞的小男孩發表於2024-08-21

一、專案的目錄結構

推薦的 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)

相關文章