我主要使用zsh,所以我在.zshrc文件中设置环境变量是这样的:
# .zshrc
...
## Pyenv
export PATH="/home/vagrant/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
然后应用环境 ( source .zshrc) 或重新启动 shell。
vagrant in ~ at arch
➜ pyenv
pyenv 1.2.21
Usage: pyenv <command> []
Some useful pyenv commands are:
activate Activate virtual environment
commands List all available pyenv commands
deactivate Deactivate virtual environment
doctor Verify pyenv installation and development tools to build pythons.
exec Run an executable with the selected Python version
global Set or show the global Python version(s)
help Display help for a command
...
好的!现在我们可以通过 pyenv 来管理 python 二进制文件。但是如果您尝试使用 pyenv 安装 python,由于依赖关系,它可能会失败。这种情况请参考官方文档。
用法
$ pyenv versions # List all Python versions available to pyenv
* system (set by /home/vagrant/.pyenv/version)
$ pyenv install --list # List all available versions
Available versions:
2.1.3
2.2.3
2.3.7
...
$ pyenv install 3.9.0 # Install specific python version
Downloading Python-3.9.0.tar.xz...
-> www.python.org/ftp/python/…
Installing Python-3.9.0...
Installed Python-3.9.0 to /home/vagrant/.pyenv/versions/3.9.0
$ pyenv versions
* system (set by /home/vagrant/.pyenv/version)
3.9.0
$ pyenv global 3.9.0 # Set or show the global Python version(s)
$ pyenv versions
system (set by /home/vagrant/.pyenv/version)
* 3.9.0
$ python --version
Python 3.9.0
诗歌
--
诗歌是 Python 的依赖管理。大多数编程语言都有依赖项或包管理器。比如Javascript的npm,Rust的cargo等。
当然,pip在 Python 中已经存在。那么为什么是诗歌,而不是点子?
pip存在以下问题:
-
依赖解析
-
(非确定性)依赖锁定
-
虚拟环境(需要额外的应用程序,如
virtualenv)
诗歌是一种新的依赖管理工具,可以解决上述问题。所以让我们从一个简单的示例项目开始写诗吧!
$ curl -sSL raw.githubusercontent.com/python-poet… | python # Install using script
</span>poetry <span style="color:var(--syntax-error-color)">-V</span> <span style="color:var(--syntax-comment-color)"># need to configure PATH environment 'HOME/.poetry/bin'
Poetry version 1.1.2
安装poetry后,创建示例项目文件夹,命名为poetry-examplepoetry并初始化项目
$ poetry new poetry-example
Created package poetry_example in poetry-example
$ cd poetry-example && ls --tree
.
├── poetry_example
│ └── init.py
├── pyproject.toml
├── README.rst
└── tests
├── init.py
└── test_poetry_example.py
好的!现在poetry-example是一个使用诗歌的项目!然后,让我们安装requests软件包。
$ poetry add requests # install package
Creating virtualenv poetry-example-mO5WhdNK-py3.9 in /home/meow/.cache/pypoetry/virtualenvs
Using version ^2.24.0 for requests
Updating dependencies
Resolving dependencies... (3.1s)
Writing lock file
Package operations: 14 installs, 0 updates, 0 removals
• Installing pyparsing (2.4.7)
• Installing six (1.15.0)
• Installing attrs (20.2.0)
• Installing certifi (2020.6.20)
• Installing chardet (3.0.4)
• Installing idna (2.10)
• Installing more-itertools (8.5.0)
• Installing packaging (20.4)
• Installing pluggy (0.13.1)
• Installing py (1.9.0)
• Installing urllib3 (1.25.10)
• Installing wcwidth (0.2.5)
• Installing pytest (5.4.3)
• Installing requests (2.24.0)
$ ls
poetry.lock poetry_example pyproject.toml README.rst tests
好的,现在我们可以看到poetry.lock文件了。默认情况下,诗歌会在缓存目录中创建一个虚拟环境。
$ pwd
/home/vagrant
$ ls .cache/pypoetry/virtualenvs
poetry-example-mO5WhdNK-py3.9
如果要将 virtualenv 目录更改为本地项目文件夹,可以使用virtualenvs.in-project 配置.
样式检查器和代码格式化程序
样式检查器和代码格式化程序是可以帮助提高代码质量的工具。Python 生态系统中有许多不同的工具,但这里我选择了最常用的工具。
黑色的
Black 是Python 软件基金会提供的毫不妥协的 Python 代码格式化程序。黑色的替代品是yapf,由 Google 分发。这两种工具都有自己的优点和缺点,但在我个人看来,黑色更容易使用。
$ pwd
/home/vagrant/Projects/poetry-example
$ poetry add -D black # Install black as development dependency
我black使用该-D选项安装。此选项将包添加为开发依赖项。因为在大多数情况下,Style Checker 或 Code Formatter 不需要作为项目的一部分发布。
然后,创建一个示例文件进行测试。
$ cat poetry_example/main.py
def main():
print("Hello World");
if name == "main":
main()
$ python poetry_example/main.py
Hello World
$ poetry run black poetry_example/main.py
reformatted poetry_example/main.py
All done! ✨ 🍰 ✨
1 file reformatted.
$ cat poetry_example/main.py
def main():
print("Hello World")
if name == "main":
main()
你发现使用黑色前后的区别了吗?
在执行 black 之前,在 print 语句之后main.py包含**分号。**分号不影响 Python 执行,但 Python 不使用分号,除非特殊情况。
所以,在执行完black之后,我们可以看到分号在 main.py
flake8 & 排序
flake8是基于PEP8(Python Enhance Proposal 8)")的 Python 风格检查器。black 是一个很好的代码格式化程序。但有些项目如Documentation String, black 没有提供勾选选项。flake8 不仅有助于黑色的缺乏,而且可以很容易地与黑色一起应用。
isort也是一个与 flake8 类似的工具,该工具按字母顺序对导入进行排序,并自动按类型和部分分隔。
因此,让我们将这两种工具都与黑色一起使用。
$ pwd
/home/vagrant/Projects/poetry-example
$ poetry add -D flake8 isort # Install packages
# poetry_example/main.py
from pprint import PrettyPrinter, pformat, isreadable # Expected sorts alphabetically
def Empty():
raise NotImplemented # Expected Warning - F901
def main():
pp = PrettyPrinter(indent=4)
pp.pprint(["Hello", "World"])
if name == "main":
main()
添加一些测试语句并运行。
$ python poetry_example/main.py
['Hello', 'World']
$ poetry run black poetry_example/main.py
All done! ✨ 🍰 ✨
1 file left unchanged.
$ poetry run flake8
./poetry_example/main.py:3:1: F401 'pprint.pformat' imported but unused
./poetry_example/main.py:3:1: F401 'pprint.isreadable' imported but unused
./poetry_example/main.py:7:5: F901 'raise NotImplemented' should be 'raise NotImplementedError'
$ poetry run isort poetry_example/main.py
Fixing /home/meow/Projects/poetry-example/poetry_example/main.py
$ head -5 poetry_example/main.py
from pprint import PrettyPrinter, isreadable, pformat # Changed!
(可选)pipx
Python 生态系统中有许多应用程序或包。例如,包包括和之类的东西TensorFlow,Django应用程序包括Jupyter和Ansible。
在大多数情况下,我们用于pip下载应用程序和软件包。这种方法创造了一个荒谬的情况。因为 pip 是一个通用的包安装程序,没有环境隔离。
所以,[pipx]( )是一个帮助解决这些情况的工具。
$ python3 -m pip install --user pipx # install via pip
$ python3 -m pipx ensurepath
# Example
$ pipx install bpytop
installed package bpytop 1.0.42, Python 3.9.0
These apps are now globally available
- bpytop
done! ✨ 🌟 ✨
$ which bpytop
/home/vagrant/.local/bin/bpytop
视觉工作室代码
=======
Visual Studio Code 是我最喜欢的代码编辑器之一。特别是,我认为 VSCode 与 Python 非常兼容。
因此,我将通过示例项目展示如何使用我迄今为止介绍的 VSCode 工具。首先,让我们创建一个新项目。
$ poetry new python-boilerplate && cd python-boilerplate
$ poetry config virtualenvs.in-project true --local # change virtualenv location to local
$ poetry add -D black flake8 isort
$ touch setup.cfg # for flake8 configuration
做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。
别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。
我先来介绍一下这些东西怎么用,文末抱走。
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。

(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

(4)200多本电子书
这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。
基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
(5)Python知识点汇总
知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

(6)其他资料
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。