在 windows 下配置 python 开发环境

本文主要介绍 windows 下的 python 开发环境配置,包括 python 安装、pip 安装、虚拟环境配置以及 pycharm 安装等。


python 安装及环境变量配置

推荐直接下载exe格式文件进行安装。

从官网下载 python 安装包,我下载的是 windows 下的免安装版,直接解压即可。

python 版本选择

wwwechoxu

  • bugfix 表示目前正在更新不稳定的版本

  • security 表示稳定不再提供更新的版本

  • 目前最新版本是 3.9,我选择的是 3.8,因为 3.8 的性能比 3.7 的性能要好很多

  • 如果是需要多个 python 版本共存可通过 pyenv 来进行管理。

环境变量就按照如下图所示:

wwwechoxu

安装 setuptools 及 pip 等工具

因为我 windows 上的 python 是通过免安装包来安装的,默认是不带 setuptools 及 pip 等工具的,需要自行安装。

如果是通过 exe 格式的安装包安装的 python 只要在安装时勾选"安装 pip"就会自行安装 pip 工具.

在安装 pip 之前需要先安装 setuptools 工具,但是又因为免安装的 python 默认没有自带 setuptools 工具,所以就会报错**ModuleNotFoundError: No module named 'setuptools' **导致 setuptools 工具一直安装失败。

此时需要借助第三方脚本 get-pip.py 来安装:

get-pip.py 下载地址:

然后将其复制到 python 的安装目录下,再通过python .\get-pip.py进行安装。

setuptools 安装官方教程

安装过程参考下图:

wwwechoxu

此时 setuptools 及 pip 工具都已经安装好了,但如果你用pip --version命令时会发现报错: "No module named pip"

wwwechoxu 解决办法:

修改 python 安装目录下的 python3x._pth 文件,取消#import site 的注释或者新增加一行 Lib\site-packages,再次运行 pip 命令,问题解决.

wwwechoxu

wwwechoxu

通过 pip 安装 you-get

pip3 install --upgrade you-get

wwwechoxu

windows 环境下永久修改 pip 镜像源的方法

在终端执行如下命令即可修改 pip 为国内源:

pip install pip -U
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host  mirrors.aliyun.com

或者

在当前对用户目录下(C:\Users\xx\pip,xx 表示当前使用对用户,比如张三)创建一个 pip.ini 在 pip.ini 文件中输入以下内容:

[global]
index-url = https://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

wwwechoxu

安装配置虚拟环境

虚拟环境对于 python 开发非常重要.

安装 virtualenvwrapper

pip install virtualenvwrapper-win
或者
easy_install virtualenvwrapper-win

此命令会自动安装 virtualenv,我用 pip 安装失败后来用 easy_install 安装成功,virtualenvwrapper-win 安装后只能通过 cmd 进行操作,如果通过 powershell 输入 workon ven_name 会没有输出

配置 virtualenv 环境变量

设置环境变量 WORKON_HOME 指定 virtualenvwrapper 虚拟环境默认路径。

如果不设置,会自动在当前用户目录创建相关文件夹。

wwwechoxu

设置环境变量后通过 mkvirtualenv 创建的项目就会出现在指定的 WORKON_HOME 也就是 D:\Apps 中

但当我通过 mkvirtualenv 创建命令时报错:

FileNotFoundError: [Errno 2] No such file or directory: 'd:\programfiles\python-3.8.6\Lib\venv\scripts\nt\python.exe'

解决办法:

1: 在 powershell 中输入mkdir -p D:\ProgramFiles\python-3.8.6\Lib\venv\scripts\nt

2: 再将 python 安装目录中的 python.exe 及 pythonw.exe 复制到上面创建好的目录中即可

常用命令:

1、退出当前虚拟环境

deactivate

2、查看现有虚拟环境

workon
// 或者
lsvirtualenv

3、进入指定环境

workon env_name

4、删除虚拟环境

rmvirtualenv env_name

5、进入当前虚拟环境的包目录(site-packages)

cdsitepackages

6、直接显示当前虚拟环境下所有包

lssitepackages

7、创建虚拟环境

mkvirtualenv -p D:\ProgramFiles\python-3.8.6\python.exe  opencrm
mkvirtualenv opencrm

利用pyenv管理python版本

  • pip install pyenv-win --target D:\ProgramFiles\pyenv

  • 将pyenv添加到环境变量

  • pyenv rehash

  • 修改pyenv的下载地址为国内源

打开D:\ProgramFiles\pyenv\pyenv-win\libexec\libs\pyenv-install-lib.vbs

找到If mirror = "" Then mirror = "https://www.python.org/ftp/python"

修改为 If mirror = "" Then mirror = "https://npm.taobao.org/mirrors/python"

wwwechoxu

  • pyenv update // 同步信息

wwwechoxu

  • pyenv install -l // 查看当前可支持下载的python

wwwechoxu

  • pyenv install 3.7.9 3.6.8 // 每次添加了新文件后都要执行pyenv rehash

安装后的python可在D:\ProgramFiles\pyenv\pyenv-win\versions中找到

常用命令:

// 查看本地已经安装的python
pyenv versions

//  更新pyenv-win
pip install --upgrade pyenv-win

//  删除指定版本
pyenv uninstall 3.5.2

//  切换python全局版本
pyenv global 3.6.5

另外pyenv还有一个非常厉害的插件就是pyenv-virtualenv,可以去看下,我还是选择使用pyenv+virtualenvwrapper来使用.

pyenv-win官方文档

pyenv+virtualenvwrapper管理虚拟环境

上面通过pyenv安装了多个python,如果我们想创建不同python版本的虚拟环境可使用如下方法:

//推荐使用此方法,因为我们已经通过exe安装了一个默认的python版本

mkvirtualenv -p D:\ProgramFiles\pyenv\pyenv-win\versions\3.6.8\python.exe  opencrm

另外还可以先通过pyenv global 3.7.9更改默认python版本为3.7.9,然后通过mkvirtualenv opencrm

windows 下 pycharm 安装

下载 pycharm2020.2,也可在网盘或者移动硬盘中进行复制。

提示

目前的激活插件已适用pycharm2020.2.3,在插件包中也提供了pyacharm安装包以及插件包和安装参数。

这些文件已备份到了网盘和移动硬盘。

下载好后安装并试用.

  • 打开 Help->Register 查看注册信息可以看到我们使用的 2020.2 版本只有 30 天的使用期限。
  • 将激活插件拖进 pycharm 中,等待界面弹出如下窗口之后选择 Restart。
  • 配置安装参数,复制从网盘下载的安装参数文件里的内容
  • 重启 pycharm

pycharm 配置

主要是对py文件进行一些初始化配置:

#  -*-  coding:   utf-8  -*-
#  Author  :      ${USER}
#  DateTime:      ${DATE} ${TIME}

wwwechoxu

中央c的md2的亿次值

pip install pycryptodome

# -*- coding:utf-8 -*-

from Crypto.Hash import MD2

md2_str = "39"
for _ in range(100000000):
    md2_str = MD2.new(md2_str.encode(encoding='utf-8')).hexdigest()
print(md2_str)

# 输出结果:  94b1cf2c8f4aa239dd69e90f0850b2f9

在linux中后台运行python脚本: nohup python3 md2.py 2>&1 &

补丁更新地址

pycharm控制台报错

报错内容:

from _pydev_bundle._pydev_getopt import gnu_getopt ModuleNotFoundError: No module named '_pydev_bund

这是因为我使用的是python的压缩包,而不是通过python的exe文件安装,所以确实了一些组件,这才导致启动控制台时报如上错误。

解决办法:

  • 下载python的exe安装文件,再进行安装即可。

Django 版本选择

wwwechoxu

wwwechoxu

wwwechoxu

wwwechoxu

  • 如果你用的是 python2.7 以下请使用 django1.11.x
  • 如果你用的是 python3.7 以下请使用 django2.2 或者 django1.11.2x
  • 想体验新功能可选择 django3

JupyterLab安装与使用

我选择的是将jupyter安装在虚拟环境中而不是通过全局安装。

当然也可选择将jupyter安装在windows上而不是虚拟环境中,我这样做的目的是方便管理以及避免造成python环境混乱。

  • 在本机通过命令mkvirtualenv jupyterlab创建虚拟环境jupyterlab,然后再通过workon jupyter启动虚拟环境

  • 在虚拟环境里通过pip install jupyterlab 安装jupyterlab

  • 在本机通过powershell创建工作目录mkdir -p D:\Apps\jupyterlab\Lib\site-packages\codeFiles

更改JupyterLab默认目录

//  在虚拟环境中执行

jupyter lab --generate-config

打开上面生成的配置文件,找到c.LabApp.notebook_dir,修改内容为上面创建好的工作目录。注意反斜杠\要改为斜杠/

修改后的结果如下:

// 在本机编辑jupyter_notebook_config.py,文件路径C:\Users\EchoXuWIN\.jupyter\jupyter_notebook_config.py

c.LabApp.notebook_dir = 'D:/Apps/jupyterlab/Lib/site-packages/codeFiles'

在 Chrome 应用模式下运行

配置chrom的本地启动功能,让lab像IDE一样在本地打开

打开 Jupyter Lab 的配置文件,在最后面添加一行即可!

// 在本机编辑jupyter_notebook_config.py

c.LabApp.browser = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe --app=%s'

下面的操作可适用于服务器配置,可让jupyter远程访问:

//  在本机终端执行生成密码

ipython
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:f704b702aea2:01e2bd991f9c7208ba177b46f4d10b6907810927'


// 在本机编辑jupyter_notebook_config.py
# 将ip设置为*,意味允许任何IP访问
c.NotebookApp.ip = '*'
# 这里的密码就是上边我们生成的那一串
c.NotebookApp.password = 'sha1:f704b702aea2:01e2bd991f9c7208ba177b46f4d10b6907810927'
# 服务器上并没有浏览器可以供Jupyter打开
c.NotebookApp.open_browser = False
# 监听端口设置为8888或其他自己喜欢的端口
c.NotebookApp.port = 8888
# 允许远程访问
c.NotebookApp.allow_remote_access = True

启动jupyter

//  在虚拟环境中执行

`jupyter-lab`

jupyter不能导入外部包

首先介绍下我的jupyter环境:

  • 设置了jupyter的默认打开目录为D:/Apps/jupyterlab/Lib/site-packages/codeFiles,也是存放.ipynb文件的路径。

  • 虚拟环境中的包都安装在D:\Apps\jupyterlab\Lib\site-packages,与上面设置的工作目录是同级目录。

这样我在.ipynb文件中导入外部包from Crypto.Hash import MD2, MD4时报错:

ModuleNotFoundError: No module named 'Crypto'

解决办法有两种:

  • 方法一(目前采用此方法): 将导包代码改为如下,这样导包就不会报错
import sys,time
sys.path.append("..")

from Crypto.Hash import MD2

在添加了一次后发现其它文件中不加sys.path.append("..")也没报错

  • 方法二: 将需要导入的包从D:\Apps\jupyterlab\Lib\site-packages中复制一份到D:/Apps/jupyterlab/Lib/site-packages/codeFiles中也可解决,但此方法显得很冗余。

wwwechoxu

将virtualenv虚拟环境添加到jupyter(可选)

jupyter使用的是默认的python版本,如果想使用其它的python版本,需要通过pyenv+mkvirtualenv来创建虚拟环境。

下面的方法适用于:

  • jupyter是通过全局安装的而非在虚拟环境中安装。

提示

如果是想在虚拟环境中安装jupyter而又想使用其它版本的python,建议是直接创建对应python版本的虚拟环境,再在里面安装jupyter。

1: 通过mkvirtualenv创建虚拟环境

//  python3.6.8是通过pyenv进行管理的
//  本机执行,非虚拟环境

mkvirtualenv -p D:\ProgramFiles\pyenv\pyenv-win\versions\3.6.8\python.exe  jupyter3.6.8

2: 安装ipykernel内核

//  本机执行,非虚拟环境
pip install --user ipykernel

3: 添加虚拟环境到jupyter

//  本机执行,非虚拟环境
// --name指定为我们通过mkvirtualenv创建的虚拟环境名称

 python -m ipykernel install --user --name=jupyter3.6.8

jupyter-lab启动jupyterlab

wwwechoxu

从jupyter中移除virtualenv虚拟环境

1: 列出现有的虚拟环境

jupyter kernelspec list

2: 移除虚拟环境

// 最后一个jupyter是我们创建的虚拟环境

jupyter kernelspec uninstall jupyter3.6.8

jupyter代码自动补全

1: 安装 jupyterlab-kite

pip install jupyter-kite

2: 安装nodejs和npm

因为我本机已经安装了nodejs,所以我选择将其复制到虚拟环境中。

  • 从nodejs安装目录中复制node.exenpmnpm.cmdD:\Apps\jupyterlab\Scripts

  • 将nodejs安装目录下的node_modules复制到D:\Apps\jupyterlab\Scripts

这样就相当于安装了nodejs和npm了。

当然也可使用如下方法:

conda install -c conda-forge nodejs

3: 下载插件

//  需要借助梯子

jupyter labextension install @kiteco/jupyterlab-kite

重启jupyter。

jupyter插件

上次更新:
贡献者: iEchoxu