Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

为Python项目建立虚拟环境 #85

Open
Qingquan-Li opened this issue Apr 10, 2018 · 0 comments
Open

为Python项目建立虚拟环境 #85

Qingquan-Li opened this issue Apr 10, 2018 · 0 comments
Labels

Comments

@Qingquan-Li
Copy link
Owner

Qingquan-Li commented Apr 10, 2018

开发环境:

  • macOS
  • Python3.5

References:


虚拟环境是系统的一个位置,你可以在其中安装包,并将其与其他 Python 包隔离。将项目的库与其他项目分离是有益的,并且为了将项目部署到服务器,这也是必须的。


myproject-myvenv-activate-pip-deactivate


一、为Python项目新建一个目录,并创建一个虚拟环境

为项目新建一个目录,将其命名为 myproject ,再在终端中切换到这个目录,并创建一个虚拟环境。如果使用的是 Python 3,可使用如下命令来创建虚拟环境( 这里运行了模块 venv ,并使用它来创建一个名为 myvenv 的虚拟环境。):

$ mkdir myproject
$ cd myproject
myproject $ python3.5 -m venv myvenv

# 注意:使用 Python venv 模块,创建的虚拟环境中的 Python 版本,取决于创建虚拟环境时所用的 Python 版本。
# 例如以下使用 Python 3.9 创建一个名为 venv 的虚拟环境,虚拟环境中的 Python 版本即为 3.9 。
$ brew install python@3.9
$ mkdir myproject && cd myproject
myproject $ python3.9 -m venv venv
myproject $ source venv/bin/activate
(venv) myproject $ python -V
Python 3.9.7

注:Python 3.3 以后自带 venv 模块支持轻量级虚拟环境,无需安装 virtualenv 模块,然而 virtualenv 模块仍然被支持,可安装。

myproject-myvenv

  • python -m venv myvenv :创建一个独立的 Python 运行环境,已经安装到系统 Python 环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的 Python 运行环境。
  • python -m venv --system-site-packages myvenv :使虚拟环境指向系统环境包目录(非复制),在系统环境 pip 新安装包,在虚拟环境就可以使用。

二、激活虚拟环境

myproject $ source myvenv/bin/activate
(myvenv)myproject $ 

这个命令运行 myenv/bin 中的脚本 activate 。环境处于活动状态时,环境名将包含在括号内,如上第二行所示。在 myenv 虚拟环境中安装的包,仅在该虚拟环境处于活动状态时才可用(如果关闭运行虚拟环境的终端,虚拟环境也将不再处于活动状态)。


三、退出使用虚拟环境

(myvenv)myproject $ deactivate
myproject $

附:在虚拟环境中安装第三方库

注:虚拟环境中 pip 版本可能过低,导致安装某些库失败。例如使用 python3.5 -m venv myvenv 安装的虚拟环境为 python3.5 默认自带的 pip 8.1.1 版本, pip3.5 install beautifulsoup4 会失败。需要升级 pip

➜  /Users/fatli/python/test01 > python3.5 -m venv myvenv
➜  /Users/fatli/python/test01 > source myvenv/bin/activate
(myvenv) ➜  /Users/fatli/python/test01 > pip3.5 -V
pip 8.1.1 from /Users/fatli/python/test01/myvenv/lib/python3.5/site-packages (python 3.5)
(myvenv) ➜  /Users/fatli/python/test01 > pip3.5 install beautifulsoup4
Collecting beautifulsoup4
  Could not fetch URL https://pypi.python.org/simple/beautifulsoup4/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:645) - skipping
  Could not find a version that satisfies the requirement beautifulsoup4 (from versions: )
No matching distribution found for beautifulsoup4
(myvenv) ➜  /Users/fatli/python/test01 > curl https://bootstrap.pypa.io/get-pip.py | python3.5
... ...
(myvenv) ➜  /Users/fatli/python/test01 > pip3.5 -V
pip 19.0.3 from /Users/fatli/python/test01/myvenv/lib/python3.5/site-packages/pip (python 3.5)
(myvenv) ➜  /Users/fatli/python/test01 > pip3.5 install beautifulsoup4
... ...
Successfully installed beautifulsoup4-4.7.1 soupsieve-1.8

注:可以在自己的系统环境中执行 pip freeze > requirements.txt 命令,保存当前开发环境,然后在虚拟环境中执行 pip install -r requirements.txt 命令,一次安装全部系统环境已安装的包。






安装 virtualenv

如果使用的是较早的 Python 版本(如 Python 2.7 ),或者系统没有正确地设置,不能使用模块 venv ( Python 3 自带 venv 模块),可安装 virtualenv 包:

$ pip install virtualenv

同上,为 Python 项目新建一个目录后,创建一个虚拟环境:

$ mkdir myproject
$ cd myproject
myproject $ virtualenv --no-site-packages myvenv

virtualenv 创建一个独立的Python运行环境,加上了参数 --no-site-packages ,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,就得到了一个不带任何第三方包的“干净”的 Python 运行环境。

然而注意:
--no-site-packages DEPRECATED. Retained only for backward compatibility.Not having access to global site-packages is now the default behavior.
参数 --no-site-packages 已经被弃用。仅为了向下兼容而保留此参数。现在默认不会获取全局(系统环境)的 site-packages 包了。

其他操作同上。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant