在 Spyder 中将站点包目录添加到 PYTHONPATH

Issue adding site-packages directory to PYTHONPATH in Spyder

我正在使用 Spyder 并尝试将 /usr/local/lib/python3.7/site-packages 添加到 PYTHONPATH 管理器。但是,我收到一条错误消息,通知我“无法将此目录添加到 PATH。如果您想设置不同的 Python 解释器,请转到首选项 > 主解释器”。

但是,我已经将解释器更改为指向 /usr/bin/python3

目前,我正在使用一种相当烦人的解决方法,将以下内容放在我所有代码的顶部。

import sys
sys.path.append("/usr/local/lib/python3.7/site-packages")

输入以下内容会得到以下内容。有没有一种方法我什至可以确保在终端中 运行 pip3 install XXX 之后,包被下载到如下某个地方?

for p in sys.path: print(p)

/Users/user
/usr/local/lib/python3.7
/Users/user/opt/anaconda3/lib/python37.zip
/Users/user/opt/anaconda3/lib/python3.7
/Users/user/opt/anaconda3/lib/python3.7/lib-dynload

/Users/user/opt/anaconda3/lib/python3.7/site-packages
/Users/user/opt/anaconda3/lib/python3.7/site-packages/aeosa
/Users/user/opt/anaconda3/lib/python3.7/site-packages/IPython/extensions
/Users/user/.ipython

或者,最好是,关于如何将上述站点包目录添加到我的 PATH 的建议?我觉得我遗漏了一些明显的东西。

(Spyder 维护者) 我们禁止通过我们的 PYTHONPATH 管理器添加 site-packages 目录,因为它允许人们混合两个不同的 Python 版本(这是通过将您的系统 site-packages 添加到 Anaconda 的 Python).

,您想做什么

我们这样做是因为它通常会为 Numpy、Pandas 和 Matplotlib 等二进制包生成奇怪的错误和段错误,因为一个 Python 版本的二进制包与另一个版本的包不兼容一.

最后,即使您找到了解决方法(使用 sys.path),我们也强烈建议您停止这样做,因为它不会让您在未来感到头疼。

按照您的要求行事不是推荐的前进路径,但您可以通过以下任一方式(A 或 B)解决根本问题。

“确保 pip 将软件包安装到 Spyder 可以看到的另一个位置”,正如提问者在对没有得到答案的已接受答案的评论中猜测的那样(下面的方法 B)通常不是一个好主意。为 Spyder 保持干净的环境将确保您可以可靠地确定每个项目的需求(包括包版本)。因此,与您的猜测相反:确保 Spyder 在 pip 安装项目所需包的环境中使用 Python 解释器。

一个。更改 Python 解释器

  1. 转到“工具”、“首选项”,然后将 Python 解释器设置为用于安装软件包的 python 可执行文件(如果使用虚拟环境,则为 your_other_env/bin/python) .
  2. 关闭并重新打开 Spyder(Spyder 说要重新启动 IPython 控制台,但在这种情况下它可能不起作用并显示 Spyder 无法重新启动它未启动的内核的错误)。
  3. 再次打开 Spyder 并 运行 任何 py 文件。您将收到一条错误消息,提示您安装 spyder-kernels 软件包(出于某种原因,pip 22.0.4 将仅安装 spyder_kernels:此问题位于“spyder-kernels should be spyder_kernels”:编辑:但问题无效,因此请先升级 pip,例如在您的虚拟环境中通过 pip install --upgrade pip)。 记下错误中的版本,因为这是您需要的版本。
  4. 如果您使用的是 conda 或 Windows,说明会有所不同,因此请参阅 Spyder 文档中的 Common Illnesses 而不是继续此步骤。
source your_other_env/bin/activate
pip install --upgrade pip setuptools
pip install spyder-kernels=...
deactivate

但将 ... 更改为步骤 3 中 Spyder 错误中显示的版本。如果您按照建议使用 conda 安装 Spyder,请改用上面 URL 中的命令。

正如我所解释的,我不推荐方法 B。但是,如果您手动安装适用于所有项目但不在项目的 requirements.txt 或 setup.py 要求中的 Spyder 插件或测试套件(因此不要不会影响确定用户的要求)。

乙。为了“确保 pip 将软件包安装到 Spyder 可以看到的另一个位置”,您可以 运行 “spyder_env/bin/python -m pip install ...” 来安装软件包,其中 spyder_env 是 virtualenv Spyder 已安装(但如果 Spyder 使用安装程序或 linux 发行包安装在系统中,您可能需要使用系统的 python,例如 via python3 -m pip install --user ...,其中 ...包名。始终使用 --user 而不是 sudo 或 root 以避免将 distro-packaged 模块和您手动安装的模块混合在一起导致文件不匹配。