Python 开发环境配置
Python 开发环境配置
- Python 开发环境配置
安装 Python
WIndows 下直接到官网下载可执行文件安装即可, 或者下 Anaconda, 从 Anaconda 里装也可以
下载好的 python 安装程序除了手动运行安装外还可以使用命令行来安装, 例如:
python-3.10.6-amd64.exe /quiet InstallAllUsers=1 TargetDir=C:\Python310 PrependPath=1 Include_test=0
InstallAllUsers=1
所有用户可用PrependPath=1
添加环境变量TargetDir=C:\Python310
: 指定安装目录Include_test=0
: 不安装 Python 的测试文件或测试模块。测试文件通常用于开发和测试 Python 本身,而不是用于一般应用程序开发
等待一会儿后新开个 powershell / cmd 窗口验证下:
可以看到已经成功安装在默认目录下且添加了环境变量了
重开 powershell 窗口会重新加载环境变量, 而有时候当前 powershell 窗口可能保存了一些当前需要的临时变量, 重开后就丢失了, 还需要重新操作, 此时也可以通过如下方式, 在不关闭当前 powershell 窗口的前提下重新加载环境变量
如果已经 安装了 Chocolatey, 那么可以直接使用
refreshenv
来刷新当前 powershell 窗口的环境变量如果没装 Chocolatey 的话也可以在当前 powershell 窗口中执行如下命令来将当前 PowerShell 进程中的 PATH 环境变量设置为与系统环境变量中的 PATH 值相同
[System.Environment]::SetEnvironmentVariable("Path", [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine), [System.EnvironmentVariableTarget]::Process) # 或者使用如下命令也是可以的: $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine")
[System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine)
: 从系统环境变量中获取名为 "Path" 的环境变量的值。[System.Environment]
是 .NET Framework 中的一个类,用于访问系统环境变量。[System.EnvironmentVariableTarget]::Machine
参数指定了要获取的是计算机级别的环境变量。[System.Environment]::SetEnvironmentVariable("Path", ...)
:用获取到的系统环境变量值来更新当前 PowerShell 进程中的 PATH 环境变量。[System.Environment]::SetEnvironmentVariable
方法用于设置环境变量的值。它接受三个参数:
- 第一个参数是要设置的环境变量的名称,这里是 "Path",表示 PATH 环境变量。
- 第二个参数是要设置的新值,它使用了之前获取的系统环境变量的值,确保当前进程中的 PATH 与系统环境变量中的 PATH 一致。
- 第三个参数是指定了要设置的环境变量的范围,这里是
[System.EnvironmentVariableTarget]::Process
,表示将更改应用于当前进程。
Ubuntu安装Python3 - 知乎 (zhihu.com)
# 更新源
apt update
# 安装 Python3
apt install python3-pip
# 验证
pip -V
python3 -V
修改默认 Python 版本
【Python】Ubuntu修改默认Python版本_remo0x的博客-CSDN博客_ubuntu更改默认python版本
# 删除原来的软链接 rm /usr/bin/python3 # 添加新的软链接 ln -s /root/anaconda3/envs/py310/bin/python /usr/bin/python3
pip 操作
# 将包安装到指定路径(示例)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygame --target=C:/Users/233/AppData/Local/Programs/Python/Python38/Lib/site-packages
离线迁移 python 库
python - How to install packages offline? - Stack Overflow --- python - 如何离线安装软件包? - 堆栈溢出
pip download - pip documentation v23.2.1 --- pip 下载 - pip 文档 v23.2.1 (pypa.io)
要在一台断网的机器上安装 python 库的话, 可以现在一台联网的机子上下载所需的 whl 包, 然后拷贝到断网机器中来安装
PS: 两台机器需要有相同的系统以及相同的 python 以及 pip 版本
对于需要安装的库可以现在联网的机器上新建并 CD 到一个空目录, 然后执行如下命令
mkdir pip
cd pip
pip download pip
mkdir wheel
cd wheel
pip download wheel
mkdir [pkg_name]
cd [pkg_name]
pip download [pkg_name]
这会在当前命令行目录下新建一堆包目录, 每个包目录都尤其相关的 whl 依赖, 将这些目录拷贝到离线主机的某个目录中, 并在 powershell 中 cd 到该目录, 运行如下命令即可安装这些包
$packages = Get-ChildItem -Directory
foreach ($package in $packages) {
$package_name = $package.Name
$package_path = $package.FullName
Write-Host "Install package: $package_name"
Write-Host "Package path: $package_path"
pip install --no-index --find-links $package_path $package_name
}
--no-index
: 忽略包索引(只查看--find-links URL
)--find-links
:- 如果是 html 文件的 URL 或路径,则解析指向存档的链接,例如 sdist (.tar.gz) 或wheel (.whl) 文件。
- 如果是本地路径或 file:// URL,则在目录列表中查找档案。
- 不支持指向 VCS 项目 URL 的链接
要逐个包安装的话也是如此:
pip install --no-index --find-links /path/to/download/dir/ [pkg_name]
PS: 上述是逐个梳理依赖的情况, 如果有完整的 requirements 的话就比较方便了, 首先是在联网主机上下载这些依赖
pip download -r .\requirements.txt
将该目录拷贝到离线主机上后执行如下命令
pip install --no-index --find-links [targer_path] -r [requirements.txt_path]
换源操作
winrey/EasyConnectedInChina: 汇总apt,pip,nodejs等各种工具国内镜像源和设置镜像源的方法 (github.com)
# 单独使用
py -3.8 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencc
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencc
# 通过文件安装依赖
py -3.8 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
# 更新 pip
py -3.8 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
- 镜像源地址
- 阿里云
https://mirrors.aliyun.com/pypi/simple/ - 中国科技大学
https://pypi.mirrors.ustc.edu.cn/simple/ - 豆瓣(douban)
http://pypi.douban.com/simple/ - 清华大学
https://pypi.tuna.tsinghua.edu.cn/simple/ - 中国科学技术大学
http://pypi.mirrors.ustc.edu.cn/simple/
- 阿里云
补充:将包装到指定路径:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygame --target=C:/Users/233/AppData/Local/Programs/Python/Python38/Lib/site-packages
源地址
官方源
https://pypi.python.org/simple
阿里云
https://mirrors.aliyun.com/pypi/simple/
中国科技大学
https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban)
http://pypi.douban.com/simple/
清华大学
https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学
http://pypi.mirrors.ustc.edu.cn/simple/
使用方法
方法一:临时使用
直接在pip后加-i后跟这次使用的源即可,例:
pip install web.py -i https://mirrors.aliyun.com/pypi/simple/
指令中的网址为上方的源地址。
如果出现带有
trusted-host
字样的报错,这是由源不为 https 协议导致的,使用:pip install web.py -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
添加信任主机即可。
方法二:更改默认源
可以使用
# 获取当前默认源
pip config get global.index-url
# 设置默认源
pip config set global.index-url xxxx
# 例如更改为清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
# 改回官方源
pip config set global.index-url https://pypi.python.org/simple
来设置 xxxx
源
查看当前 pip 配置
pip config list
# 备份
global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'
install.trusted-host='pypi.tuna.tsinghua.edu.cn'
创建或修改配置文件(一般都是创建)
linux与mac的设置的文件在
~/.pip/pip.conf
,vim ~/.pip/pip.conf
windows在
%HOMEPATH%\pip\pip.ini
如果没有创建即可。
更改内容:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
或
[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com
文件中的网址为上方的源地址。 刚刚下面的内容是http协议源的实例。需要添加信任。 保存退出即可。
方法三:python代码更改安装源
临时使用其他源安装软件包的python脚本如下:
#!/usr/bin/python
import os
package = raw_input("Please input the package which you want to install!\n")
command = "pip install %s -i https://mirrors.aliyun.com/pypi/simple/" % package
# http源的代码实例如下
# command = "pip install %s -i http://pypi.mirrors.ustc.edu.cn/simple --trusted-host pypi.mirrors.ustc.edu.cn" % package
os.system(command)
环境/依赖版本管理工具
virtual environment
# 安装 virtualenv
pip install virtualenv
# 使用 virtualenv 创建虚拟环境
virtualenv -p python3 env
# 激活虚拟环境(Windows)
.\env\Scripts\activate
# 激活虚拟环境(Linux)
source env/bin/activate
这里的
-p python3
中的python3
具体会创建什么版本的 python 环境, 只需要在当前命令行中python3 -V
看一下就知道了相应的要创建什么版本的 python 环境, 也可以直接将 python3 环境指定环境 python 解释器的路径, 例如
virtualenv -p /usr/bin/python3.11 env
PS: 使用 conda 环境的 python 创建虚拟环境时最好进入
conda activate [env_name]
然后再使用virtualenv -p python [env_name]
来创建, 直接使用 conda python 路径创建可能会卡住
在 Win 中对应环境变量中路径下匹配到的首个
python.exe
, 相应的python3
就对应的是第一个匹配到的python3.exe
, 可以使用如下命令确认:python -V python3 -V python >>> import sys >>> print(sys.executable)
在 Linux 中对应的即为
/usr/bin/python
符号链接指向的 python 程序, linux 中要修改的话修改相应/usr/bin/pythonxx
符号链接对应的 python 程序路径即可
Pipenv
这里记录的是 ubuntu 下的配置
Windows 的话 Pycharm 中有自带的 Pipenv 包
如何开始使用 Pipenv? | w3c笔记 (w3cschool.cn)
WSL Ubuntu 18.04上使用pipenv的4个关键点 | 老梅笔记 (laomeinote.com)
Pipenv: Python Dev Workflow for Humans — pipenv 2021.11.9 documentation (pypa.io)
12. Virtual Environments and Packages — Python 3.10.0 documentation
Pipenv 是 Python 的 Python 打包工具,是对使用 Pip、Venv 和 requirements.txt的升级。Pipenv 是将包管理与虚拟环境相结合的好方法。
虚拟环境是一个自包含的目录树,其中包含针对特定 Python 版本的 Python 安装,以及许多其他包。
安装 pipenv
模块:
apt install pipenv
pip insatll pipenv
使用 cd
命令切换到需要安装虚拟环境的目录安装虚拟环境(如果当前目录下没有 Pipfile
则会先生成 Pipfile
, 如果有的话便会继续安装虚拟环境):
pipenv install
Pipfile
中将[[source]]
区域下的url
改为国内的源# 华为镜像 https://repo.huaweicloud.com/repository/pypi/simple # 阿里镜像 https://mirrors.aliyun.com/pypi/simple # 官方源 https://pypi.python.org/simple
如果默认生成的
Pipfile
中的包特别多, 那么这条命令会执行很长时间且没有 log, 这将会是一个很折磨的过程(
启动虚拟环境
pipenv shell
可以通过 exit
退出虚拟环境
Poetry
Poetry - Python dependency management and packaging made easy (python-poetry.org)
python-poetry/poetry: Python dependency management and packaging made easy. (github.com)
Poetry 是 Python 的依赖管理器
Poetry 可以帮助您声明、管理和安装 Python 项目的依赖项,确保到处都有正确的 stack。
支持 python 3.7 +
系统需求
需求 Python 2.7 或 3.5+. 支持跨平台, 在 Windows, Linux, OSX 系统上都可以同样出色地运行;
Python 2.7 以及 3.5 后续版本不再支持, 需要升级 Python 版本
个人建议 Python 3.8 以上, 因为用 Python 3.7.3 安装报错了
安装
Poetry 提供了一个自定义的安装程序, 通过解构 Poetry 的依赖关系, 将 Poetry 与系统的其他部分隔离开
osx / linux / bashonwindows install instructions
:
curl -sSL https://install.python-poetry.org | python -
如果报错
则可通过
--insecure
参数来放弃验证curl -sSL --insecure https://install.python-poetry.org | python -
如果出现
syntax error
那么大概是 Python 版本比较低, 可以安装 python3.8 及以上版本后使用curl -sSL --insecure https://install.python-poetry.org | python3 -
打开 ~/.bashrc
: 将 poetry 所在目录添加到该配置文件中
export PATH="/root/.local/bin:$PATH"
# 重载配置文件
source ~/.bashrc
# 查看 poetry 版本
poetry -V
windows powershell install instructions
:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
上图中使用的是旧版的
1.x
版本的安装链接:https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py
, 新版本推荐使用https://install.python-poetry.org
来安装建议在安装Python之前系统优先的Python不要是conda环境, 也就是说最好系统优先的 Python 环境是自己手动安装的标准 Python 环境
PS: 因为我没装标准Python环境直接用 conda 出问题了, poetry 安装位置会乱飞还会找不到dll
使用
poetry --version
报错的话需要手动加下环境变量, 如上图所示的目录加到系统变量的path
变量中即可urllib.error.URLError: <urlopen error unknown url type: https>
如果出现以上错误, 那可能是因为默认 Python 版本比较低, 建议使用 3.8 以上的版本
poetry 会自动添加环境变量, 安装完后重启 powershell
, 检查下 poetry 版本:
poetry --version
安装 pipx(需要 pip 19.0 及以上版本)
pip install --user pipx
可以看到最后有 warning 提示当前没有添加 Path, 可以 cd 到对应目录然后运行
.\pipx.exe ensurepath
安装完 pipx 后可以通过 pipx 安装 poetry(记得重启 powershell 以更新环境变量)
pipx install poetry
配置文件
- macOS:
~/Library/Application Support/pypoetry
- Windows:
C:\Users\<username>\AppData\Roaming\pypoetry
可以通过:
poetry config virtualenvs.in-project true
来让 poetry 默认在项目根目录下创建 venv
作为虚拟环境目录, 或者直接写配置文件:
[virtualenvs]
in-project = true
此项配置默认为
false
若在配置此项之前创建了虚拟环境, windows 下应该在
C:\Users\用户名\AppData\Local\pypoetry\Cache\virtualenvs
目录下, 将其删除后重新在项目根目录下poetry install
即可在项目根目录下创建.venv
作为虚拟环境目录
pyproject.toml
换源
Poetry 默认配置从 PyPI 查询依赖包, 如果想要使用私仓(或是镜像)的话需要如如下配置
[[tool.poetry.source]]
name = "private"
url = "http://example.com/simple"
例如:
[[tool.poetry.source]] name = "aliyun" url = "http://mirrors.aliyun.com/pypi/simple" default = true
[[tool.poetry.source]] name = "tsinghua" url = "https://pypi.tuna.tsinghua.edu.cn/simple/" default = true
基本用法
安装依赖
Python - poetry(5) 依赖规范 (win80.net)
对于一个用 poetry 设置 python 环境的项目, 其根目录下有 poetry 的pyproject.toml
即可通过 poetry install
来安装该项目所需的依赖, 如果发现卡主或是其他问题, 可以使用 poetry -vvv install
以在安装依赖时查看更详细的调试信息
可以在 pyproject.toml
的 tool.poetry.dependencies
区域指明依赖版本
也可以通过 poetry add
来安装依赖
poetry add numpy
使用虚拟环境
默认情况下, poetry 会在 {cache-dir}/virtualenvs
({cache-dir}\virtualenvs
on Windows)目录下创建一个虚拟环境:
如果先前设置了 poetry config virtualenvs.in-project true
的话执行 poetry install
安装依赖则会装在项目根目录的 .venv
里
激活虚拟环境: cd
进入 .venv
然后使用 poetry shell
激活虚拟环境
结合 conda 环境使用
poetry 可以直接使用 conda 环境而不单独创建虚拟环境
只需要先 activate 对应 conda 环境, 然后把 pyproject.toml
中的 python 版本对其当前 conda 环境版本即可
此时使用 poetry shell
会输出 Virtual environment already activated: xxxxxx
不过当然也可以使用 conda 环境来创建虚拟环境, 只需要使用 poetry env use 对应conda环境的python.exe路径
即可利用该 conda 环境创建虚拟环境
在当前 conda 环境的 bin
目录中找不到 activate 脚本导致环境激活失败(ubuntu)
在该 conda 环境的 bin 目录下新建一个 activate 文件, 写入如下代码然后重新 poetry shell 即可
#!/bin/sh
_CONDA_ROOT="/root/anaconda3/envs/xxx" # 该 conda 环境根目录
# Copyright (C) 2012 Anaconda, Inc
# SPDX-License-Identifier: BSD-3-Clause
\. "$_CONDA_ROOT/etc/profile.d/conda.sh" || return $?
conda activate "$@"
奇怪的是虽然没有 activate 脚本, 但是直接 conda activate 是有用的
常见问题
Failed to create the collection: Prompt dismissed..
python poetry 1.0.0 private repo issue fix – Frank-Mich's Blog
# test.py
import keyring
print(keyring.util.platform_.config_root())
poetry run python test.py
打开输出的文件目录(不存在则创建), 新建一个 keyringrc.cfg
, 填入
[backend]
default-keyring=keyring.backends.fail.Keyring
卡 keyring
Poetry blocks on "Pending..." during installation · Issue #6050 · python-poetry/poetry (github.com)
有时候 poetry install
会一只卡 pending, 此时需要查看一些调试信息, 可以使用 poetry -vvv install
来查看更多运行时信息, 如果发现是卡在 keyring 上, 可以运行如下命令
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
然后重新 poetry -vvv install
即可
python 版本不对
比如这个仓库需要 python 3.10
以上的 python 版本, 这里虽然我全局 python 目前是 3.10, 但是 poetry 当时是 python 3.8 版本安装的, 使用了当时全局的 python 3.8 环境
因此这里需要将 poetry 的默认 python 版本指向 python3.10
# 查看 poetry 当前使用的 python 版本(在带 pyproject.toml 的目录下执行)
poetry env info
# 为 poetry 指定需要使用的 python 环境
poetry env use [python可执行程序路径]
# PS: 如果需要使用的就是当前全局的 python 的话也可以直接
poetry env use python
PDM
pdm-project/pdm: A modern Python package manager with PEP 582 support. (github.com)
PDM - 一款新的 Python 包管理器 | Frost's Blog (frostming.com)
pdm/README_zh.md at main · pdm-project/pdm (github.com)
官方文档已经讲得很详细了, 这里摘录下来方便个人阅读
PDM 是由 Poetry 开发组的成员开发的( •̀ ω •́ )✧
概述
PDM 旨在成为下一代 Python 软件包管理工具。它最初是为个人兴趣而诞生的。如果你觉得 pipenv
或者 poetry
用着非常好,并不想引入一个新的包管理器,那么继续使用它们吧;但如果你发现有些东西这些 工具不支持,那么你很可能可以在 pdm
中找到。
PEP 582 提出下面这种项目的目录结构:
foo
__pypackages__
3.8
lib
bottle
myscript.py
项目目录中包含一个__pypackages__
目录,用来放置所有依赖的库文件,就像npm
的node_modules
一样。 你可以在这里阅读更多提案的细节。
主要特性
- PEP 582 本地项目库目录,支持安装与运行命令,完全不需要虚拟环境。
- 一个简单且相对快速的依赖解析器,特别是对于大的二进制包发布。
- 兼容 PEP 517 的构建后端,用于构建发布包(源码格式与 wheel 格式)
- 灵活且强大的插件系统
- PEP 621 元数据格式
- 像 pnpm 一样的中心化安装缓存,节省磁盘空间
为什么不用虚拟环境
现在大部分的 Python 包管理器也同时管理虚拟环境,这主要是为了隔离项目开发环境。但如果涉及到虚拟 环境嵌套虚拟环境的时候,问题就来了:你可能用一个虚拟环境的 Python 安装了某个虚拟环境管理工具, 然后又用这个工具去创建更多虚拟环境。当某一天你升级了新版本的 Python 你必须一个一个去检查这些 虚拟环境,没准哪个就用不了了。
然而 PEP 582 提供了一个能把 Python 解释器和项目开发环境解耦的方法。这是一个相对比较新的提案, 没有很多相关的工具实现它,这其中就有 pyflow。但 pyflow 又是用 Rust 写的,不是所有 Python 的社区 都会用 Rust,这样就没法贡献代码,而且,基于同样的原因,pyflow 并不支持 PEP 517 构建。
安装
安装 PDM 需要 Python 3.7 或更高版本
但是运行 PDM 没有 Python 版本要求
curl -sSL https://ghproxy.com/https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py | python3 -
使用 powershell
:
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py -UseBasicParsing).Content | python -
自动添加的 PATH 在用户变量中, 重启 VSCode 后可能依然无法正确识别 p
dm 命令, 此时可以手动修改环境变量, 在系统变量的 PATH 中加上上图中的相应值
使用 pipx
:
pipx install pdm
QuickStart
初始化一个新的 PDM 项目:
新建一个项目文件夹, 在当前文件夹目录下打开 powershell:
pdm init
按照指引回答提示的问题,一个 PDM 项目和对应的pyproject.toml
文件就创建好了。
把依赖安装到 __pypackages__
文件夹中
pdm add tk
# 删除则可用:
pdm remove tk
working with PEP 582
推荐在 .gitignore
中忽略
__pypackages__/
.pdm.toml
对于 VSCode, 可以先用命令行安装 pdm-vscode:
pdm plugin add pdm-vscode
安装完后, 在输入 pdm init
或者 pdm use
命令后会自动创建 .vscode/settings.json
{
"python.autoComplete.extraPaths": ["__pypackages__/<major.minor>/lib"],
"python.analysis.extraPaths": ["__pypackages__/<major.minor>/lib"]
}
需要结合 pylance 使用的话需要在项目根目录创建一个 pyrightconfig.json
:
{
"exclude": ["__pypackages__"]
}
PDM Scripts
例如运行 main.py
可以使用
pdm run python main.py
pdm run python main.py
或者
eval "$(pdm --pep582)"
python main.py
或者将 pdm --pep582
写到 /root/.bash_profile
然后再在 bash 中使用 python main.py
PDM-packer
frostming/pdm-packer: A PDM plugin that packs your packages into a zipapp (github.com)
A PDM plugin that packs your packages into a zipapp
pdm-packer requires Python >=3.7
安装:
pdm plugin add pdm-packer
使用:
$ pdm pack [common-options] [pack-options]
Common Options:
-h, --help
show this help message and exit
-v, --verbose
-v for detailed output and -vv for more detailed
-g, --global
Use the global project, supply the project root with
-p
option
-p PROJECT_PATH, --project PROJECT_PATH
Specify another path as the project root, which changes the base of pyproject.toml and
__pypackages__
Pack Options:
-m MAIN, --main MAIN
Specify the console script entry point for the zipapp
-o OUTPUT, --output OUTPUT
Specify the output filename. By default the file name will be inferred from the project name.
-c, --compress
Compress files with the deflate method, no compress by default
--pyc, --compile
Compile source into pyc files
--no-py
Remove the .py files in favor of .pyc files
-i INTERPRETER, --interpreter INTERPRETER
The Python interpreter path, default: the project interpreter
--exe
Create an executable file. If the output file isn't given, the file name will end with .exe(Windows) or no suffix(Posix)
See also: https://docs.python.org/3.9/library/zipapp.html
示例:
# Create with default name(<project_name>.pyz) and console_script as the __main__.py
pdm pack
# Create an executable file
pdm pack --exe
# Create with custom __main__.py and filename
pdm pack -o app.pyz -m app:main
Anaconda
Anaconda
安装完成后调起命令行会默认启动 conda 环境, 可以使用如下命令开启或关闭该项配置
# 关闭自动启动conda环境
conda config --set auto_activate_base false
# 启动自动启动conda环境
conda config --set auto_activate_base true
创建一个名为 BigData
, python 版本为 3.9 的虚拟环境
conda create -n BigData python=3.9
激活 BigData
conda 环境
conda activate BigData
退出当前虚拟环境
conda deactivate
Conda clean 净化Anaconda - 简书 (jianshu.com)
Anaconda conda常用命令:从入门到精通_chenxy_bwave的专栏-CSDN博客_conda常用命令
Anaconda 官网
可在此处获取其他版本的安装包
Windows
需要注意的是, 使用 Anaconda Navigator 或者 conda 环境操作时需要关掉梯子, 否则可能会报 host 错误
Anaconda 官网
可在此处获取其他版本的安装包
需要注意的是 Anaconda 装完之后打开命令行总会自动进入 conda 环境, 可以通过更改 conda 配置来取消自动进入
conda config --set auto_activate_base false
如果想要设置自动进入的话将
false
改为true
运行即可
安装完成后打开 Anaconda Navigator
:
Anaconda 换源
打开
anaconda prompt
执行以下命令来配置清华源:
不打开 navigator 也是完全可行的, 打开命令行就可以了, 前提是为 anaconda 配置了环境变量
只要在命令行中
conda -V
有版本号输出就可以了conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes
配置清华源是为了后续使用
pip
命令安装 python 库时快些, 不配置换源而直接使用默认源的话在墙内容易超时报错中科大源:
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/ conda config --set show_channel_urls yes
需要注意的是 conda 换源后会使更新 conda 的操作可能会报错
因此在更新 conda 的时候记得回复默认源
conda config --remove-key channels
查看源:
conda config --show
新建一个 conda 环境
打开 Anaconda Navigator -> Environments
在环境列表底部按钮中找到 Create
并点击
为新环境命一个名(英文命名, 尽量简短些, 之后激活要用)
这里选择了 Python 3.8.13, 不上 3.9 或者 3.10 主要是因为有一些三方库更新没跟上, 不一定支持 python3.9 及以上
在命令行中使用 conda 环境可以使用如下指令激活:
conda activate 环境名
Anaconda Navigator 升级
conda update conda -y
conda update anaconda -y
conda update anaconda-navigator -y
如果进行了换源操作记得在升级前恢复默认源, 否则可能会在镜像源中找不到更新包
conda config --remove-key channels
Ubuntu
如何在 Ubuntu 20.04 上安装 Anaconda - 云+社区 - 腾讯云 (tencent.com)
Anaconda conda常用命令:从入门到精通_chenxy_bwave的专栏-CSDN博客_conda常用命令
# 安装 Anaconda
#wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
#bash Anaconda3-2021.11-Linux-x86_64.sh
wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
bash Anaconda3-2022.05-Linux-x86_64.sh
若出现
段错误 (核心已转储)
字样, 可以使用wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
从断点处继续下载
长按 ENTER 阅读完条款
yes
选择安装路径, 默认为 /root/anaconda3
, 这个过程会比较长
yes, 执行初始化, 这将会将命令行工具 conda 添加到系统的 PATH 环境变量中。
不过想要激活 Anaconda,还需要关闭并且重新打开你的 shell 或者在当前 shell 会话中输入下面的命令,来重新加载 PATH 环境变量:
source ~/.bashrc
可以使用 conda --version
查看 Anaconda 版本
设置国内镜像
#设置清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
#设置bioconda
conda config --add channels bioconda
conda config --add channels conda-forge
#设置搜索时显示通道地址
conda config --set show_channel_urls yes
创建一个名为 BigData
, python 版本为 3.9 的虚拟环境
conda create -n BigData python=3.9
激活 BigData
虚拟环境
conda activate BigData
退出当前虚拟环境
conda deactivate
Conda clean 净化Anaconda - 简书 (jianshu.com)
Anaconda conda常用命令:从入门到精通_chenxy_bwave的专栏-CSDN博客_conda常用命令
Anaconda 官网
可在此处获取其他版本的安装包
报错收集
check_hostname requires server_hostname
- 本来是在
Pycharm
中新建conda
环境报的错误,接着打开Anaconda Navigator
也报了相同的错误 - 最终在anaconda-issues #12410找到的相同报错及解决方案
- 关掉VPN即可解决(
对于 Clash 而言可以打开此项配置
开了之后就正常了:
各类 HTTPError
相关
我这边报错都是清华的源报错,换成阿里的源就没问题了(
https://mirrors.aliyun.com/anaconda/pkgs/main/
ModuleNotFoundError: No module named 'pip._vendor....'
pip
出问题了- 在
CMD.exe Prompt
中执行conda update pip
即可
VSCode
用于编辑与运行 python 程序, 选择 VSCode 主要是其比较轻量, 启动比较快, 用起来比较顺手, 且插件市场庞大, 对于许多语言都有插件支持, 按需下载
比起安装 python 解释器自带的 IDLE 友好许多, 又不会像 Pycharm 一样庞大/启动慢/占资源, 作为平时写点小脚本, 小玩意儿来说完全够用
扩展
汉化插件
Python 相关基础插件
jupyter 插件
使用 Jupyter 的好处在于可以边写笔记边写代码, 如下图所示, 在笔记中可以插入代码块并运行及显示
Markdown 插件
命令行插件 Terminal
用于在 VSCode 中打开 powershell 执行命令
Pylance 无法加载自定义模块
有时 Pylance 可能会识别不了 import 导入的自定义包, 此时需要设置 VScode Pylance 的 python.analysis.extraPaths
属性, 加上自定义包的所在目录
可以在设置中添加:
也可以直接在当前工作目录下新建一个 .vscode/settings.json
进行配置:
{
"python.analysis.extraPaths": [
"/usr/local/python37/lib/python3.7/site-packages",
]
}
然后就可以 Pylance 正常加载相关包了
有时候可能仍旧索引不到相关模块, 那么可以将层级写深点, 不止于
site-packages
, 而是写到模块 py 文件所在目录
生成环境依赖
生成整个当前环境的依赖
pip freeze > requirements.txt
如果对项目使用了虚拟环境那么这会是一个生成项目依赖的不错的方法
生成当前项目的依赖
pip install pipreqs pipreqs .
Pycharm
Pycharm 换源
实际上这里我用的
conda环境
,相应的也可以在anaconda
中进行换源配置
快捷键
查找替换
Ctrl + R
替换Ctrl + Shift + R
全局替换
无意中触发了TIM快捷键:``Ctrl+Alt+F`(文字识别)
创建文档注释脚本
File -> Settings -> Editor -> File and Code Templates
例:Python Script
例:
# -*- coding: utf-8 -*- # @Time : ${DATE} ${TIME} # @Author : 咸鱼型233 # @File : ${NAME}.py # @Software: ${PRODUCT_NAME}
导入自己的模块报红
- 参考文章
- 结论:
- 本地路径并未被标记“源目录”
- 解决方案:
- File | Settings | Build, Execution, Deployment | Console | Python Console
- 勾选"Add source roots to PYTHONPAT"
- 当前程序根目录右键->“Mark Directory as”->“Sources Root”
- File | Settings | Build, Execution, Deployment | Console | Python Console
PEP8 代码规范检查
JupyterLab
接触 VSCode 的 Jupyter 插件后感觉还是 VSCode + Jupyter 比较好用, 一方面 VSCode 可以安装许多插件作为编码的辅助工具, 另一方面, 单个
.ipynb
文件也比较方便编辑
简介
- JupyterLab,极其强大的下一代notebook![原文链接]
- JupyterLab是Jupyter主打的最新数据科学生产工具,某种意义上,它的出现是为了取代Jupyter Notebook。不过不用担心Jupyter Notebook会消失,JupyterLab包含了Jupyter Notebook所有功能。
- JupyterLab作为一种基于web的集成开发环境,你可以使用它编写notebook、操作终端、编辑markdown文本、打开交互模式、查看csv文件及图片等功能。
- 可以把JupyterLab当作一种究极进化版的Jupyter Notebook。原来的单兵作战,现在是空陆空联合协作。
- Jupyter有如下特点
- 交互模式:Python交互式模式可以直接输入代码,然后执行,并立刻得到结果,因此Python交互模式主要是为了调试Python代码用的
- 内核支持的文档:使你可以在可以在Jupyter内核中运行的任何文本文件(Markdown,Python,R等) 中启用代码
- 模块化界面:可以在同一个窗口同时打开好几个notebook或文件(HTML, TXT, Markdown等等) ,都以标签的形式展示,更像是一个IDE
- 镜像notebook输出:让你可以轻易地创建仪表板
- 同一文档多视图:使你能够实时同步编辑文档并查看结果
- 支持多种数据格式:你可以查看并处理多种数据格式,也能进行丰富的可视化输出或者Markdown形式输出
- 云服务:使用Jupyter Lab连接Google Drive等服务,极大得提升生产力
使用
Anaconda自带,直接在
Home
里Launch
即可启动完之后会发现默认启动路径是电脑
用户根目录
,可以将其改到一个自己觉得合适的目录,操作如下- JupyterLab修改启动默认路径[原文链接]
Anaconda
的Environments
界面用Terminal
打开默认的Python环境(也即默认安装的JupyterLab的依赖环境)- 安装
zmq
pip install -i https://mirrors.aliyun.com/pypi/simple/ zmq
生成配置文件
Jupyter notebook --generate-config
若成功则会显示
Writing default config to: 文件路径
- 打开该
文件路径
指向的文件,利用Ctrl+f
找到c.NotebookApp.notebook
,将其#注释删除,在''
中填入自己认为合适的启动路径
我这里是
C:\Users\233\.jupyter\jupyter_notebook_config.py
- 记得保存文件
- 打开该
再次在
Home
里Launch
启动JupyterLab
确认配置情况
插件
环境准备
打开
cmd prompt
或者Powershell prompt
安装
npm
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple npm
安装
nodejs
conda install -c conda-forge nodejs
- 不要给
yarn
和npm
换淘宝的源- 淘宝源里没有JupyterLab相关的插件,下载插件时会
404
- 淘宝源里没有JupyterLab相关的插件,下载插件时会
安装插件
- 在
JupyterLab
可视化界面中安装
会有安装提示
install
及rebuild
等- 安装好并且
rebuild
之后若左侧栏目未正常显示该插件则先关闭JupyterLab
再重新启动看看有没有正常加载,若仍未正常显示则可以看看下面这条
- 在
反复安装与卸载插件可能会导致插件无法正常加载的错误
错误发现:
Anaconda中运行
cmd prompt
或者Powershell prompt
jupyter labextension list
并回车,会给出
Known labextensions
和Uninstalled core extensions
- 若一个插件同时在两项中出现则其无法正常加载
错误解决方法
- 找到
JupyterLab
插件build
的配置文件- 位置在
<conda_root>/envs/<env_name>/share/jupyter/lab/settings/build_config.json
- 若
JupyterLab
的环境conda
的默认的root
环境,则位置在<conda_root>/share/jupyter/lab/settings/build_config.json
- 位置在
- 找到
插件推荐
@kiteco/jupyterlab-kite
Python
代码提示在
Anaconda
中安装Spyder
的时候一般会引导下载Kite
使用效果
安装
Prompt
安装打开
Anaconda
的Prompt
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jupyter-kite jupyter labextension install @kiteco/jupyterlab-kite
重启
JupyterLab
即可
快捷键
命令模式 (按键 Esc 开启)
Enter
转入编辑模式
Shift-Enter
运行本单元,选中下个单元
Ctrl-Enter
运行本单元
Alt-Enter
运行本单元,在其下插入新单元
Y
单元转入代码状态
M
单元转入markdown状态
R
单元转入raw状态
1
设定 1 级标题
2
设定 2 级标题
3
设定 3 级标题
4
设定 4 级标题
5
设定 5 级标题
6
设定 6 级标题
Up
选中上方单元
K
选中上方单元
Down
选中下方单元
J
选中下方单元
Shift-K
扩大选中上方单元
Shift-J
扩大选中下方单元
A
在上方插入新单元
B
在下方插入新单元
X
剪切选中的单元
C
复制选中的单元
Shift-V
粘贴到上方单元
V
粘贴到下方单元
Z
恢复删除的最后一个单元
D,D
删除选中的单元
Shift-M
合并选中的单元
Ctrl-S
文件存盘
S
文件存盘
L
转换行号
O
转换输出
Shift-O
转换输出滚动
Esc
关闭页面
Q
关闭页面
H
显示快捷键帮助
I,I
中断Notebook内核
0,0
重启Notebook内核
Shift
忽略
Shift-Space
向上滚动
Space
向下滚动
编辑模式 ( Enter 键启动)
Tab
代码补全或缩进
Shift-Tab
提示
Ctrl-]
缩进
Ctrl-[
解除缩进
Ctrl-A
全选
Ctrl-Z
复原
Ctrl-Shift-Z
再做
Ctrl-Y
再做
Ctrl-Home
跳到单元开头
Ctrl-Up
跳到单元开头
Ctrl-End
跳到单元末尾
Ctrl-Down
跳到单元末尾
Ctrl-Left
跳到左边一个字首
Ctrl-Right
跳到右边一个字首
Ctrl-Backspace
删除前面一个字
Ctrl-Delete
删除后面一个字
Esc
进入命令模式
Ctrl-M
进入命令模式
Shift-Enter
运行本单元,选中下一单元
Ctrl-Enter
运行本单元
Alt-Enter
运行本单元,在下面插入一单元
Ctrl-Shift
– 分割单元
Ctrl-Shift-Subtract
分割单元
Ctrl-S
文件存盘
Shift
忽略
Up
光标上移或转入上一单元
Down
光标下移或转入下一单元
pipx
pypa/pipx: Install and Run Python Applications in Isolated Environments (github.com)
安装
pip install pipx --user pipx
提示需要将路径添加到 PATH, 这个可以让 pipx 来完成
首先 cd
到安装 pipx 的目录, 然后执行 ./pipx ensurepath
:
然后重启终端输入 pipx 看看有没有反馈信息
如果有回显信息:
那么说明成功了
如果没有的话则需要手动将 C:\Users\233\AppData\Roaming\Python\Python38\Scripts
(以我上面安装pipx的路径为例) 添加到环境变量的 PATH
变量中
概述
Pipx 是一个帮助您安装和运行用 Python 编写的最终用户应用程序的工具。它大致类似于 macOS 的 brew,JavaScript 的 npx,和 Linux 的 apt。
它与 pip 密切相关。实际上,它使用 pip,但是它专注于安装和管理可以从命令行直接作为应用程序运行的 Python 包。
pipx 与 pip 的区别
Pip 是一个通用的包安装程序,用于没有环境隔离的库和应用程序。
Pipx 是专门为应用程序安装而设计的,因为它增加了隔离性,但仍然使应用程序可以在外壳中使用: pipx 为每个应用程序及其相关包创建一个隔离的环境。
pipx 从什么地方安装 app
默认情况下,pipx 使用与 pip 相同的包索引 PyPI。Pipx 还可以从所有其他来源安装 pip can,比如本地目录、 wheel、 git url 等。
Python 和 PyPI 允许开发人员使用“控制台脚本入口点”分发代码。这些入口点允许用户从命令行调用 Python 代码,有效地起到独立应用程序的作用。
Pipx 是一个工具,用于以安全、方便和可靠的方式安装和运行这些数千个包含应用程序的软件包。在某种程度上,它把 pythonpackageindex (PyPI)变成了 Python 应用程序的大型应用程序商店。并不是所有的 Python 包都有入口点,但是很多都有。
ubuntu 16.04 安装 Python 3.8.12
成功了但没完全成功, 不打算再在 ubuntu 16.04 LTS 上整花活了.
PS: 2022-8-5: 成功了, 详见 [Ubuntu 16.04 LTS 配置Jupyter服务](#Ubuntu 16.04 LTS 配置Jupyter服务)
PS: VSCode 用
Python Environment Manager
扩展获取最新 Python 环境也是可以的(推荐使用此项, 一键安装免配置, 懒人解法)
20220803 ubuntu16.04LTS Python Environment Managerv1.0.4 拉取最新 Python 装了个 3.9.13 的 conda 环境
ubuntu 16.04 默认自带 Python2.7 和 Python3.5, 可以通过whereis python
查看
这里选择 3.8.12 属于是保守了, 一方面考虑到 1604 有点老, 另一方面有些三方库也并没有跟上时代
配置依赖环境
apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev
下载 Python3.8.12 压缩包并解压
wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tar.xz
# 解压
tar -xf Python-3.8.12.tar.xz
# 进入解压目录
cd Python-3.8.12
# 执行安装(这两步时间会比较长)
./configure prefix=/usr/local/python3
make && make install
# 备份原来的 Python 软链接
mv /usr/bin/python /usr/bin/python.bak
# 修改 python3 软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
# 验证安装
python -V
# 更新 pip
python -m pip install --upgrade pip
# 验证更新
pip -V
Ubuntu 16.04 LTS 配置Jupyter服务
实验环境
: windows 10 使用 root 用户 远程 ubuntu 16.04 LTS 虚拟机
直接使用 VSCode 的 Python Environment Manager
扩展获取最新 conda 环境
激活当前 conda 环境 conda activate xxx
安装 jupyter
套件
pip install jupyter
pip install jupyterlab
pip install notebook
打开 VScode 的 settings.json
,加上
"jupyter.jupyterCommandLineArguments": [
"--allow-root"
],
报错收集
ERROR: Could not install packages due to an Environment
Python Failed to write executable - trying to use .deleteme logic 解决方法 | 烟雨平生 (i007it.com)
如果在 VSCode 中的终端中运行安装库的命令出现类似于如下报错
ERROR: Could not install packages due to an Environment: [WinError 2] 系统找不到指定的文件 : xxxxxxxxx -> xxxxx\\pythonxx\\Scripts\\xxx.exe.deleteme
那么就是权限问题, 请使用管理员方式打开 VSCode