几个月前,我开始用Python开发。我正在使用虚拟环境,因为我在后面的教程中强烈建议使用Python绑定安装OpenCV。我想知道安装新模块的最佳实践是什么(在Ubuntu上)。虚拟环境的名称为cv
。从命令行安装时,我是否应该在虚拟环境中?即我应该输入
pip3 install modulename
或
workon cv
pip3 install modulename
或两者兼而有之?它应该有所作为吗?
答案 0 :(得分:3)
virtualenv将本地python解释器复制到一个文件夹中,一旦激活,将其位置预先设置为PATH
- 意味着坐在那里的python可执行文件将用于运行python代码。从本质上讲,就是这样。
使用virtualenv venv
创建virtualenv之后,您可以使用source ./venv/bin/activate
- 已完成激活它。
如果您不确定venv是否处于活动状态,通常可以查看命令行,该命令行将包含如下名称:(venv) user@workstation:~$
。或者,您可以运行python -c "import sys; print(sys.executable)"
,然后打印venv的位置而不是/usr/bin/python
,或者系统默认值。
由于很多人使用PyCharm,请按照these instructions在IDE中使用venv。它简单方便,所以如果你使用PyCharm,我建议你用它来处理你的静脉。
将开发环境彼此隔离可以为您节省很多头疼的麻烦。也许你想尝试最新的python开发版,而不是在你宝贵的系统上释放它,也许你需要不同版本的python包用于不同的项目。保持执行环境静态,因为源代码更改通常是一个非常好的主意。
默认情况下,安装软件包所需的工具setuptools
,pip
和wheel
已经打包到新创建的venv中,您只需安装一个包{ {1}}。注意 不要使用sudo ,因为这会将执行用户更改为root并绕过venv-activation。
pip install package_name
- 我想使用与我的默认解释器不同的python解释器,例如virtualenv -p pyhton3.7 venv
。 Needs an installation of said python interpreter on the system <!/ LI>
python3.7
- 我想使用已经与venv中使用的python解释器一起安装的所有软件包。如果你经常使用像numpy这样的大包,那就很有用。 virtualenv --system-site-packages venv
- 从github克隆项目(并virtualenv venv && source ./venv/bin/activate && pip install -r requirements.txt
进入它)后,为它设置一个工作独立的python环境。答案 1 :(得分:1)
在第一种情况下,软件包将安装在系统的Python(3)目录中。在第二个,他们将安装在你的virtualenv。取决于你想要的结果......
答案 2 :(得分:1)
是的,您需要处于要安装软件包的虚拟环境中。每个新环境都与其他环境分开,并且与您的全局python环境分开。这是虚拟环境的好处,因为在处理另一个项目时,您不会遇到与其他软件包冲突的软件包。