在 windows 下配置 python 开发环境
本文主要介绍 windows 下的 python 开发环境配置,包括 python 安装、pip 安装、虚拟环境配置以及 pycharm 安装等。
python 安装及环境变量配置
推荐直接下载exe格式文件进行安装。
从官网下载 python 安装包,我下载的是 windows 下的免安装版,直接解压即可。
python 版本选择
bugfix 表示目前正在更新不稳定的版本
security 表示稳定不再提供更新的版本
目前最新版本是 3.9,我选择的是 3.8,因为 3.8 的性能比 3.7 的性能要好很多
如果是需要多个 python 版本共存可通过 pyenv 来进行管理。
环境变量就按照如下图所示:
安装 setuptools 及 pip 等工具
因为我 windows 上的 python 是通过免安装包来安装的,默认是不带 setuptools 及 pip 等工具的,需要自行安装。
如果是通过 exe 格式的安装包安装的 python 只要在安装时勾选"安装 pip"就会自行安装 pip 工具.
在安装 pip 之前需要先安装 setuptools 工具,但是又因为免安装的 python 默认没有自带 setuptools 工具,所以就会报错**ModuleNotFoundError: No module named 'setuptools' **导致 setuptools 工具一直安装失败。
此时需要借助第三方脚本 get-pip.py 来安装:
然后将其复制到 python 的安装目录下,再通过python .\get-pip.py
进行安装。
安装过程参考下图:
此时 setuptools 及 pip 工具都已经安装好了,但如果你用pip --version命令时会发现报错: "No module named pip"
解决办法:
修改 python 安装目录下的 python3x._pth 文件,取消#import site 的注释或者新增加一行 Lib\site-packages,再次运行 pip 命令,问题解决.
通过 pip 安装 you-get
pip3 install --upgrade you-get
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
安装配置虚拟环境
虚拟环境对于 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 虚拟环境默认路径。
如果不设置,会自动在当前用户目录创建相关文件夹。
设置环境变量后通过 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"
pyenv update
// 同步信息
pyenv install -l
// 查看当前可支持下载的python
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+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,也可在网盘或者移动硬盘中进行复制。
TIP
目前的激活插件已适用pycharm2020.2.3,在插件包中也提供了pyacharm安装包以及插件包和安装参数。
这些文件已备份到了网盘和移动硬盘。
下载好后安装并试用.
- 打开 Help->Register 查看注册信息可以看到我们使用的 2020.2 版本只有 30 天的使用期限。
- 将激活插件拖进 pycharm 中,等待界面弹出如下窗口之后选择 Restart。
- 配置安装参数,复制从网盘下载的安装参数文件里的内容
- 重启 pycharm
pycharm 配置
主要是对py文件进行一些初始化配置:
# -*- coding: utf-8 -*-
# Author : ${USER}
# DateTime: ${DATE} ${TIME}
中央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 版本选择
- 如果你用的是 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
中也可解决,但此方法显得很冗余。
将virtualenv虚拟环境添加到jupyter(可选)
jupyter使用的是默认的python版本,如果想使用其它的python版本,需要通过pyenv+mkvirtualenv来创建虚拟环境。
下面的方法适用于:
- jupyter是通过全局安装的而非在虚拟环境中安装。
TIP
如果是想在虚拟环境中安装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
从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.exe
、npm
、npm.cmd
到D:\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。