ChatGPT解决这个技术问题 Extra ChatGPT

站点包位于 Conda 环境中的什么位置?

在 Conda 环境中安装包后,我想对该包中的代码进行一些更改。

在哪里可以找到包含已安装软件包的 site-packages 目录?

我有一个 Anaconda Python 2.7 基本发行版,但找不到目录:

/Users/username/anaconda/lib/python2.7/site-packages
重要提示: Conda 跟踪文件大小以检测损坏/包破坏,并且由于某些文件是硬链接的,因此在一个环境中进行编辑可能会导致所有环境和包缓存中的损坏。如果计划手动编辑特定软件包的文件,请考虑首先使用 conda install --copy --force-reinstall <pkg_name> 操作以仅复制模式重新安装该软件包。

A
Arcturus B

您可以导入模块并检查 module.__file__ 字符串。它包含相关源文件的路径。

或者,您可以阅读模块文档中的 File 标记,可以使用 help(module) 或 IPython 中的 module? 访问该标记。


我的问题是我收到 conda 应该安装的包的包导入“未找到”错误。所以我想检查一下 conda 认为它安装包的位置。
@BenFarmer:这听起来像是一个完全不同的问题。您是否尝试过搜索“conda list installed package paths”这一行的内容?这将返回 stackoverflow.com/q/46767012stackoverflow.com/q/47138241
感谢@Arcturus B 仅添加一个示例example: >>import tensorflow >>tensorflow.__file__
我的问题是我在 conda 列表中看到它,但我找不到它的位置……有什么想法吗?
V
Vlad Costin

在 python shell 中运行它:

from distutils.sysconfig import get_python_lib
print(get_python_lib())

我的问题是我在 conda 列表中看到它,但我找不到它的位置……有什么想法吗?
S
Steve

Linux 用户可以像这样找到所有已安装包的位置:

pip list | xargs -exec pip show

更新 2022-03-21 以删除 pip 列表输出顶部不需要的表标题:

pip list | tail -n +3 | xargs -exec pip show

这是 xargs 的一些优雅用法!
我刚刚使用:pip show 。它工作,我得到了文件。
但他说他正在使用conda ...?
我的问题是我在 conda 列表中看到它,但我找不到它的位置……有什么想法吗?
@CharlieParker 听起来您希望能够列出给定 conda 包中的文件:stackoverflow.com/questions/47138241/…。验证软件包是否安装在正确的环境中(您的 Python 二进制文件所在的环境),并且它是否包含 Python 查看的目录中的文件(使用 python -m site 列出这些路径)。
N
Nick Veld

使用解释器的另一种选择:

import site; print(''.join(site.getsitepackages()))

并使用终端/提示:

python -c "import site; print(''.join(site.getsitepackages()))"

同样在这种情况下,您可以使用自己的过滤器轻松打印目录之一(如果有多个)


H
Hezi Zhang

我安装了 miniconda 并在 /miniconda3/pkgs 中找到了所有已安装的软件包


Conda 包缓存与 Python 的 site-packages 不同。你不应该搞砸这些,否则你最终可能会收到来自 Conda 的腐败投诉。
j
jeff_carter

您也可以在命令行中键入“conda list”。这将打印出带有版本号的已安装模块。文件结构中的路径将打印在此列表的顶部。


conda 列表,只是给了我“/Users/user/anaconda: 环境中的包”作为输出。需要包的确切位置,即 /Users/user/anaconda/lib/python2.7/'。
当您想知道软件包是从哪个存储库安装的时,“conda list”是一个非常好的主意。它还显示了通过 pip 进行的安装。所以这是一个非常好的提示,尽管它不能回答问题。
这个答案实际上对我有用 - 不知道为什么它被否决了! conda list,作为它的第一行,吐出你的 conda 安装的根;里面是 pkgs 文件夹。
...实际上(关于我之前的评论),在 miniconda 安装的根目录中,我在“lib/python3.7/site-packages”找到了一些包
我的问题是我在 conda 列表中看到它,但我找不到它的位置……有什么想法吗?
R
Rafay Khan

位置应该是(在 Linux 系统中):

home/<USERNAME>/anaconda3/envs/<ENV_NAME>/lib/python<VERSION>/site-packages/

B
BHA Bilel

您应该在以下位置找到已安装的软件包:

anaconda的目录/lib/site_packages

那是我找到我的地方。


J
James Perez

至少对于 Miniconda(我假设 Anaconda 也是如此),在环境文件夹中,软件包安装在名为 \conda-meta 的文件夹中。

IE

C:\用户\用户名\Miniconda3\envs\环境名\conda-meta

如果安装在基础环境中,位置为:

C:\用户\用户名\Miniconda3\pkgs


即包缓存,与 Python 安装的 site-packages 不同。
m
merv

来自 Conda CLI 的环境 foo 的通用方法是:

conda run -n foo python -m site

对于我的基本环境来说,它看起来像:

$ conda run -n base python -m site

sys.path = [
    '/Users/mfansler/miniconda3/lib/python3.8',
    '/Users/mfansler/miniconda3/lib/python38.zip',
    '/Users/mfansler/miniconda3/lib/python3.8/lib-dynload',
    '/Users/mfansler/miniconda3/lib/python3.8/site-packages',
]
USER_BASE: '/Users/mfansler/.local' (exists)
USER_SITE: '/Users/mfansler/.local/lib/python3.8/site-packages' (doesn't exist)
ENABLE_USER_SITE: True

答案是 sys.path 列表中的 site-packages


H
Huanfa Chen

我在 conda 环境中遇到了这个问题。原因是软件包已安装到两个不同的文件夹中,Python 可执行文件只能识别其中一个。

~/anaconda2/envs/[my_env]/site-packages ~/anaconda2/envs/[my_env]/lib/python2.7/site-packages

一个经过验证的解决方案是将两个文件夹添加到 python 路径,在命令行中使用以下步骤(请将 [my_env] 替换为您自己的环境):

conda 激活 [my_env]。 conda-develop ~/anaconda2/envs/[my_env]/site-packages conda-develop ~/anaconda2/envs/[my_env]/lib/python2.7/site-packages (conda-develop 是添加一个.pth文件到文件夹,以便 Python 可执行文件在搜索包时知道该文件夹。)

为确保此操作有效,请尝试在此环境中激活 Python,并导入未找到的包。