【问题标题】:Resolving 'conda', 'sudo', and 'global' python paths解析“conda”、“sudo”和“全局”python 路径
【发布时间】:2020-07-06 01:15:12
【问题描述】:

就 conda 和 venvs(以及 s/o)而言,我是个业余爱好者,所以我希望有人能给我解释一下如何处理这 3 条路径。

Conda/全局示例

我在 conda 环境中并尝试安装 tensorrt 及其 python 绑定。它以 debian 包的形式提供,所以我很容易得到它。我假设这将在全球范围内安装它,并且我的 conda venv 将能够“看到”它,但事实并非如此。它仅在停用我的环境后可用。如何让这个包在我的 conda env 中使用?

Conda/Sudo 示例

我在 conda 环境中,并希望安装一个不能作为 debian 包提供的 python 包,而是一个 setup.py。我希望全局安装它(适用于所有环境,虚拟和非)并使用“sudo python”运行它的 setup.py。这将解析为 不同 路径,在我的虚拟环境或本地路径中不可见。与目标完全相反。如何使这个包对我的 conda venv 可见?

感谢任何帮助。

【问题讨论】:

  • 我希望全局安装它(适用于所有环境,虚拟和非虚拟环境)并使用“sudo python”运行它的 setup.py。 为什么?您在评论中写道我同意混乱的开发环境,这就是为什么我现在试图对其进行整理,但是这种事情首先不是让环境变得混乱?
  • 是的,你说得很好。我想我会混淆全局安装,因为与虚拟环境完全相反是问题所在。在 setup.py 上的 conda 中使用 python 似乎是保持分离的最佳方式。

标签: python anaconda conda ubuntu-18.04


【解决方案1】:

您将许多包装管理系统(apt、conda、pip)混合在一起。此外,您的问题违背了使用虚拟环境的目的。在安装 Python 包时,您应该只在确切知道自己在做什么的情况下使用sudo

我将为您提供一些指导方针,引导您找到解决方案,但我建议您首先理清您的开发环境,因为这只会导致更多的头痛。决定某件事并坚持下去。
如果您不想要使用虚拟环境的好处,也许您不应该使用虚拟环境。


我要写python3。对您来说,它可能被称为pypy3python。您可以在 Linux 上使用 which python3 和在 Windows 上使用 where python3 获取 python3 命令的 PATH

安装软件包时。它们被放在python3 -m site 列出的文件夹之一中。您可以激活您的虚拟环境并查看文件夹是否不同。

您将看到您当前的工作目录已自动添加。您可以看到每个用户都有自己的 site-packages 文件夹,并且有一些公共文件夹 /usr/lib/python... 是 Python 解释器的一部分。它们包含基本功能,通常您不会在其中安装自定义包。

如何将 Python 模块安装到自定义路径?
我正在链接另一个 StackOverflow 问题,因为它会有所不同。 Install a Python package into a different directory using pip?
请自行研究 Conda。

如何让我的程序使用新路径中定义的 Python 模块?
使用PYTHONPATH
当您执行python 时,它将查找python -m site 文件夹中列出的所有模块。您可以添加另一个文件夹,例如:PYTHONPATH=/home/ python -m site


我省略了很多信息,这不是维基或类似的。这只是一个导致解决方案的答案,但它不是一个漂亮的答案。

【讨论】:

  • 感谢帮助锡。我同意混乱的开发环境,这就是我现在试图解决它的原因。因此,全局包安装完全消除了对 venv 的需求,现在我考虑到它是有道理的。但是,如果一个包只能通过 apt 或 setup.py install 获得呢?我应该将生成的安装符号链接到我的特定虚拟环境中以保持某种分离吗?
猜你喜欢
  • 1970-01-01
  • 2014-10-17
  • 2013-01-28
  • 1970-01-01
  • 2019-01-13
  • 1970-01-01
  • 2018-05-14
  • 2015-04-28
  • 2012-11-19
相关资源
最近更新 更多