在 Conda 环境中安装包后,我想对该包中的代码进行一些更改。
在哪里可以找到包含已安装软件包的 site-packages
目录?
我有一个 Anaconda Python 2.7 基本发行版,但找不到目录:
/Users/username/anaconda/lib/python2.7/site-packages
conda install --copy --force-reinstall <pkg_name>
操作以仅复制模式重新安装该软件包。
您可以导入模块并检查 module.__file__
字符串。它包含相关源文件的路径。
或者,您可以阅读模块文档中的 File
标记,可以使用 help(module)
或 IPython 中的 module?
访问该标记。
在 python shell 中运行它:
from distutils.sysconfig import get_python_lib
print(get_python_lib())
Linux 用户可以像这样找到所有已安装包的位置:
pip list | xargs -exec pip show
更新 2022-03-21 以删除 pip 列表输出顶部不需要的表标题:
pip list | tail -n +3 | xargs -exec pip show
xargs
的一些优雅用法!
python -m site
列出这些路径)。
使用解释器的另一种选择:
import site; print(''.join(site.getsitepackages()))
并使用终端/提示:
python -c "import site; print(''.join(site.getsitepackages()))"
同样在这种情况下,您可以使用自己的过滤器轻松打印目录之一(如果有多个)
我安装了 miniconda 并在 /miniconda3/pkgs
中找到了所有已安装的软件包
site-packages
不同。你不应该搞砸这些,否则你最终可能会收到来自 Conda 的腐败投诉。
您也可以在命令行中键入“conda list”。这将打印出带有版本号的已安装模块。文件结构中的路径将打印在此列表的顶部。
conda list
,作为它的第一行,吐出你的 conda 安装的根;里面是 pkgs
文件夹。
miniconda
安装的根目录中,我在“lib/python3.7/site-packages”找到了一些包
位置应该是(在 Linux 系统中):
home/<USERNAME>/anaconda3/envs/<ENV_NAME>/lib/python<VERSION>/site-packages/
您应该在以下位置找到已安装的软件包:
anaconda的目录/lib/site_packages
那是我找到我的地方。
至少对于 Miniconda(我假设 Anaconda 也是如此),在环境文件夹中,软件包安装在名为 \conda-meta 的文件夹中。
IE
C:\用户\用户名\Miniconda3\envs\环境名\conda-meta
如果安装在基础环境中,位置为:
C:\用户\用户名\Miniconda3\pkgs
site-packages
不同。
来自 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
。
我在 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,并导入未找到的包。
不定期副业成功案例分享
example: >>import tensorflow >>tensorflow.__file__