补注喵
for Proj-00
关于 Python 的版本
Python 的版本号分为三部分 X.Y.Z
X
是主版本号。迭代会带来大量的变化或不兼容。现在一般都使用3
。Y
是次版本号。迭代会带来新特性和改进。一般推荐使用⑨及以上Z
是修订版本号。迭代会带来错误修正和安全更新,一般还是用越大的越好。
如未特别说明,此教程使用版本 3.11
,实际使用 3.11.9
以及,次版本号在⑨及以上的版本已不再支持 Windows7,请注意。
过高的版本有可能不稳定,需要你自己在稳定性和新特性间权衡。
关于 Python 下载
如果选择了一个次版本号相对较低的 Python,但是修订版本号又是最新的,那么你有可能找不到构建好的二进制文件。就像这样:
机翻一下也能知道,大概就是这个次版本号已经进入了安全性更新阶段,不再做 bugfix,只有源代码包提供在下面。
这时可以按照提示去找最后发布的二进制文件(图中是让你去 3.8.10
找),或者用别的第三方 Build ,或者干脆自己 Build
关于 py 启动器
如果选择安装了 py 启动器,那么 Python 解释器本体在不在环境变量 PATH
里都无所谓了。因为有 py 启动器直接位于 C:\Windows\
中。
只是如果一个能定位解释器的地方都没有的话,直接输入 python
就不行了,必须通过 py
来启动 Python。
py 启动器通过环境变量和注册表等方式来找到 Python,因此不建议直接移动 Python 的所在的文件夹,会导致一系列问题。一般推荐使用安装包来做修改。
关于交互式 Python
又被称作
IPython
Interactive Python
类似于终端,你输入的每条指令会在下一次输入前得到来自解释器的反馈。输入提示是 >>>
。
反馈内容通常是调用你输入的内容(的求值结果)的 __repr__()
方法得到的结果。如果使用了 print()
之类的函数,一般还会反馈打印的内容。
如果看上去没有任何反馈显示,可能是因为结果是
None
。
>>> None
>>> ''
''
>>> 1+2
3
>>> 1+2+3
6
>>> 2**16
65536
>>> print("Hello World")
Hello World
2
3
4
5
6
7
8
9
10
11
另一个增强版的交互式 Python 可以安装 ipython
包后通过命令行 ipython
启动
不过
jupyter
包中已经包含了它,请注意覆盖问题
关于 pip
Python 的包管理器。一般用来安装 Python 的第三方库。
就像 Linux 的包管理器那样,从中国大陆地区直接访问官方源会有些吃力,推荐换源。
↑ 省流 (x)
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
库会被安装到 python\Lib\site-packages\
下,在这个过程中会默认在 %LocalAppData%\pip\
下产生缓存,这个位置可以通过设置改变。
关于某些 VSCode 扩展的依赖
在我进行实践时,在正文中提到的扩展中,似乎只有 jupyter
需要额外自行安装命令行工具。不过还是建议再安装全面一点就是了。
对于安装这些命令行工具,我个人使用的是 pipx
。下面是流程。
安装 pipx
先在全局环境中安装 pipx
,请确保没有处于虚拟环境中。
pip install pipx
先允许我们在全局环境中拉依托,之后会清理掉。
再使用全局环境中的 pipx
在 pipx
的隔离环境中安装 pipx
。
pipx install pipx
为了让 pipx 能够正常工作,运行:
pipx ensurepath
清理全局环境
现在可以清理掉全局环境中的 pipx
及其依赖了。
先导出已安装的包
pip freeze > requirements.txt
然后手动编辑导出的 requirements.txt
,删除包的版本信息。
像这样,删掉高亮标注的部分,只留下包名。
正则表达式真好用啊
保存后使用 -r
选项卸载所有包。
pip uninstall -r requirements.txt -y
这样一来全局环境就又干净了。
安装命令行工具
像这样可以通过一行指令安装多个包
请根据需要做修改
pipx install black flake8 pylint mypy isort pdm poetry
特别地,对于 jupyter
,由于它的依赖中也有很多有用的命令行工具,使用
pipx install jupyter --include-deps
进行安装,可以使你能在命令行中启动它和它依赖的所有程序。不过这样做仍然不能在 VSCode 中直接使用 jupyter,需要额外在每个虚拟环境中安装 ipykernel
包。这里先按下不表。
关于 pipx
Python 中有些包会包含一些可执行文件(命令行工具包),如上文所述。
如果使用 pip
安装的话,这些可执行文件会被放置到 python\Scripts\
下。它们的依赖项有可能会有冲突,而且会污染全局环境。
pipx
可以自动创建虚拟环境将它们隔离开,只将可执行文件暴露到环境变量 PATH
中。十分甚至九分地方便。
因此那些使用方式是命令行调用的包,都可以用 pipx 搞定。
显然,像
requests
这样的库,就不应该这样了。
pipx
的机制
pipx
使用两个路径,一个用来存放虚拟环境和包,一个用来暴露可执行文件。
这两个路径可以通过 PIPX_HOME
和 PIPX_BIN_DIR
环境变量进行修改。仍然可以手动为他们重新分配一下,方便管理。
PIPX_BIN_DIR
是需要放在PATH
中的,使用pipx ensurepath
指令可以帮你自动完成这件事。
关于 pip 的替代品
pip 已经很老了,走到现在为了兼容性做出了很多牺牲。或许,你会想使用更高级的包管理工具?
PDM / Poetry 或许是不错的选择,可以尝试自己探索探索。
关于文件夹整理
我个人因为稍微带点强迫症所以会创一个文件夹来专门放这些东西。
总之看自己的情况罢,什么都默认也挺好的,大概?
为什么路径要纯英文?
啊,如果你能容忍程序发生各种各样的编码造成的问题的话,中文也不错噢 ww
这在 C 语言家族编程中更为重要,试试便知()
有时有可能半天找不到问题,结果发现原来是自己的用户名是中文导致的 ww
另一个例子是,Steam 也只能安装在这样的文件夹中。
所以嗯,为了兼容性、减少编码错误,请对任何开发项目都使用纯英文路径罢!(震声)