避免头痛和最佳实践:
虚拟环境不是您的git项目的一部分(它们不需要进行版本控制)!
它们可以驻留在项目文件夹(本地),但要在您的.gitignore
中忽略。
在激活项目的虚拟环境后,永远不要使用“sudo pip install package”。
完成工作后,始终“deactivate”您的环境。
避免重命名项目文件夹。
为了更好的表示,以下是一个模拟:
创建用于项目/环境的文件夹
$ mkdir envs
创建环境
$ cd envs/
$ virtualenv google_drive
New python executable in google_drive/bin/python
Installing setuptools, pip...done.
激活环境
$ source google_drive/bin/activate
安装软件包
(google_drive) $ pip install PyDrive
Downloading/unpacking PyDrive
Downloading PyDrive-1.3.1-py2-none-any.whl
...
...
...
Successfully installed PyDrive PyYAML google-api-python-client oauth2client six uritemplate httplib2 pyasn1 rsa pyasn1-modules
Cleaning up...
环境内可用的软件包
(google_drive) $ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
>>>
>>> gdrive = pydrive.auth.GoogleAuth()
>>>
停用环境
(google_drive) $ deactivate
$
包在环境外不可用
$ python
Python 2.7.6 (default, Oct 26 2016, 20:32:10)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pydrive.auth
>>>
注:
为什么不使用sudo?
Virtualenv 为您创建一个全新的环境,定义 $PATH 和其他一些变量和设置。当您使用 sudo pip install package 时,您正在作为 root 运行 Virtualenv,跳过了创建的整个环境,然后在全局 site-packages 上安装软件包,而不是安装在项目文件夹内您已经激活了环境。
如果您重命名项目文件夹...
...则需要调整项目目录中 bin 目录内某些文件的变量。
例如:
bin/pip,第1行(She Bang)
bin/activate,第42行(VIRTUAL_ENV)
pip
没有作为您的虚拟环境的一部分安装。因此,您需要先安装pip才能将库安装到您的venv中。 - pokemkvirtualenv
的。现代Python 3的解决方案是只使用venv
模块,它是Python标准库的一部分,尽管有一些第三方虚拟环境管理器提供了一些不同的功能和思维模型。这里的几个答案都是关于标准的venv
模块,其他的则是关于流行的第三方模块virtualenv
;我相信mkvirtualenv
与两者都无关。 - tripleee