虚拟环境使您能够按项目封装依赖项。
巨蟒没有
node_modules
等效。当你用
pip
它转到您的
站点包
文件夹。要查找此文件夹,可以运行
python -m site
它将打印出它将在其中搜索包的文件夹。
Fedora 29示例:
â ~ python -m site
sys.path = [
'/home/geckos',
'/usr/lib/python27.zip',
'/usr/lib64/python2.7',
'/usr/lib64/python2.7/plat-linux2',
'/usr/lib64/python2.7/lib-tk',
'/usr/lib64/python2.7/lib-old',
'/usr/lib64/python2.7/lib-dynload',
'/usr/lib64/python2.7/site-packages',
'/usr/lib/python2.7/site-packages',
]
USER_BASE: '/home/geckos/.local' (exists)
USER_SITE: '/home/geckos/.local/lib/python2.7/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
PIP与包管理器
如果不使用虚拟环境,则可能最终会与操作系统python软件包并排安装软件包,这就是危险所在。包可能被覆盖,事情会很快变得混乱。例如,使用pip安装flask,然后尝试使用package manager安装jinja2,现在移除jinja2并断开flask,或者更新系统,jinja2得到更新,但flask没有更新。或者更简单地说,使用包管理器安装一些东西,然后使用pip删除,知道包管理器处于中断状态。
因此,我们总是使用虚拟环境,甚至按项目分离虚拟环境。
创建和维护虚拟环境
没有什么能阻止您将虚拟环境维护在与项目相同的文件夹中。这样你也会有同样的
伐木
你拥有的节点模块。你可以用
virtualenv <SOME_FOLDER>
对于python 2
或
python3 -m venv <SOME_FOLDER>
对于python 3
我见过的惯例
如果您将虚拟环境保留为项目的子文件夹,我通常会调用
env
或
venv
其他的选择是把所有的东西都放在你家里的同一个文件夹里,我一直在用
~/.venv/<PROJECT>
皮彭夫
最后还有一个选择,我更喜欢纯的
匹普
. pipenv是一个为您自动管理虚拟环境的工具。感觉更接近
纱线
有更多的特点
为项目创建虚拟环境
pipenv --tree
或
pipenv --two
在项目文件夹中。它将创建和管理虚拟环境,并将依赖项写入pipenv文件。它还支持开发包,我真的认为值得尝试。这是文件:
https://docs.pipenv.org/en/latest/
我希望这有帮助,问候