我在Ubuntu 16.04 LTS的虚拟环境中安装Django框架。需要决定是否继承我的虚拟环境的system-site-packages。他们与Django安装的系统范围python3包的任何潜在冲突吗?
答案 0 :(得分:1)
如果您使用系统站点程序包,则在将应用程序发布到其他计算机上时可能会出现问题,其中全局环境可能与本地环境非常不同,这会在部署时导致许多问题。不仅可以为每个Django使用干净的虚拟环境,还可以使用所有Python项目。
答案 1 :(得分:0)
是的,系统范围的软件包可能会导致冲突。 Distro软件包有时过时或者跟随LTS版本,并且在本地环境中安装相同的软件包可能会导致错误(前一段时间我遇到了django安装了发行版软件包的问题,而且它比我的虚拟软件包更旧了环境,导致问题)。
在python中开发时我倾向于遵循的规则:只在发行版上安装Python。然后,对于每个python项目,使用虚拟环境。这样你就不会出现制作项目的问题。
答案 2 :(得分:0)
As I've written elsewhere,“很多人更喜欢孤立的环境,因此他们不使用[--system-site-packages
],但我经常使用它以避免编译包。{ {1}}可能需要很长时间,因为它需要编译内容,而pip install gdal
更快;所以我使用apt-get install python-gdal
以便能够使用系统范围的gdal(这个问题是现在大多数Python软件包都是分布式编译的,因此变得不那么重要了。作为Python轮子。另外,psycopg2编译起来很棘手,通常使用操作系统的版本更好,通常可以保证与操作系统一起使用postgresql。但是,在Windows中,我通常不使用--system-site-packages
,因为没有与操作系统一起打包的站点包。“
我从来没有遇到过冲突,也没有任何其他问题。操作系统通常可能有过时的软件包,但这不是问题。如果操作系统的pandas为0.17且我的Django项目需要0.19,那么当我输入--system-site-packages
时,它将安装0.19,这将覆盖操作系统的包。
请注意,我从未在系统范围内运行pip install -r requirements.txt
;我总是在virtualenv中运行它。因此,我的系统范围安装仅包含使用pip
安装的软件包。