我习惯于通过sudo pip install <package>
在系统范围内安装Python模块,但是pip本身和一些在线资源(例如这里)建议不要使用sudo
-主要原因:不要干扰系统所依赖的Python库。
好的,不再是sudo pip
了。然而,我也不想把所有东西都安装到虚拟环境中,因为我们不想在每个Python项目中都使用它们。通过pip
而不是sudo
安装模块也不是我喜欢的安装所需模块的方式,因为该机器上的多个用户需要它们。
那么什么是最"python化"的呢?如果sudo pip
不是要走的路,并且该模块不是由Linux发行版的包管理器提供的,那么如何在系统范围内安装模块?例如,在我的情况下,我想为那台机器上的所有用户安装tensorflow,但Ubuntu下的apt
不提供该包。
我目前也在努力解决这个问题,尽管我的用例略有不同。
这里有一个简短的讨论和一些建议。
在我的例子中,我试图部署一个可以由多个用户使用的Python应用程序,而不是一个可能由多个用户使用并以不同方式更改的环境。你的情况听起来可能更接近后者,所有用户都想要tensorflow,但他们也可能在上面安装额外的包,这可能对不同的用户有所不同。
我倾向于Laurie/EpicWink建议的方法:
我对多用户安装的一个建议是在sys-admin控制的前缀下安装包(例如——prefix/srv/my-company),然后将其添加到每个用户的PYTHONPATH(例如PYTHONPATH=/srv/my-company/lib/python3.10/site-packages:$PYTHONPATH)。对于用户安装,只需使用——user或虚拟环境。
我将在上游部署/配置步骤中处理用户PYTHONPATH的添加。当然,这种方法也有缺点。
在您的情况下,为每个用户设置和管理他们自己的tensorflow虚拟环境的说明可能是合理的,或者如果您有系统管理员权限,则通过为他们创建这个虚拟环境来给他们一个起点。主要的方法是为每个用户提供一个可以跨越多个项目的虚拟环境,这样你就不需要为10个单独的项目提供10个tensorflow副本。
我使用类似的方法,我有一个"一切"。虚拟环境,我安装Spyder, numpy, pandas,机器学习工具等。我在基础研究、分析和一次性脚本中一次又一次使用的东西。
如果我需要一个沙盒环境进行特定的应用程序开发(通常是要"部署"的东西)我在每个项目的基础上切换到它。
对不起,这不是一个确定的答案,但我在旅行中还没有遇到过……希望这对你有所帮助,如果你找到一个"更好的";我很想听听你的解决方案。