python - 如何确保 conda 的环境特定路径位于 sys.path 的顶部?

标签 python anaconda python-3.8 virtual-environment anaconda3

我有一个 conda 环境,myenv。我意识到这个环境中的 Python 解释器试图在 /usr/local/anaconda3/envs 之前从 /Users/me/.local/lib/python3.8/site-packages 导入包/myenv/lib/python3.8/site-packages。我希望所有特定于环境的路径都附加到 sys.path 的开头。这是预期的行为吗?在这种情况下,我想导入 conda 安装版本的 numpy、scipy 和 numexpr,因为它们使用 Intel MKL 后端。

(myenv) me$ which python
/usr/local/anaconda3/envs/myenv/bin/python
(myenv) me$ python
Python 3.8.5 (default, Sep  4 2020, 02:22:02) 
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__file__
>>> '/Users/me/.local/lib/python3.8/site-packages/numpy/__init__.py'
>>> import sys
>>> # /Users/me/dir* refer to directories that contain local modules I've pip installed
>>> print("\n".join(sys.path))

/usr/local/anaconda3/envs/myenv/lib/python38.zip
/usr/local/anaconda3/envs/myenv/lib/python3.8
/usr/local/anaconda3/envs/myenv/lib/python3.8/lib-dynload
/Users/me/.local/lib/python3.8/site-packages
/Users/me/dir1
/Users/me/dir2
/Users/me/dir3
/usr/local/anaconda3/envs/myenv/lib/python3.8/site-packages

其他可能相关的事情:

  • 我同时使用 conda 和 pyenv,因此将 conda 的 auto_activate_base 设置设置为 false(如此处所建议)。
  • Python 解释器声明它的版本是 3.8.5,但是 conda infopython version 列为 3.8.3.final.0。

我在 MacOS 版本 11.2.2 上使用 conda 版本 4.9.2。

最佳答案

感谢@merv 的评论,我意识到问题在于 pip 的用户站点优先于 conda 环境的包目录。我按照@merv 的建议解决了这个问题:卸载 pip 用户站点中的所有包。

me$ pyenv shell 3.8.1
me$ pip freeze --user | grep -Eo "[[:alnum:]\-]+==[[:digit:]]{1,2}\.[[:digit:]]{1,2}(\.[[:digit:]]{1,2})?" | xargs pip uninstall -y
me$ conda activate myenv
(myenv) me$ python
Python 3.8.5 (default, Sep  4 2020, 02:22:02) 
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__file__
/usr/local/anaconda3/envs/myenv/lib/python3.8/site-packages/numpy/__init__.py

关于python - 如何确保 conda 的环境特定路径位于 sys.path 的顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66753644/

相关文章:

python - 使用 2 种格式的 Python 更改类型列

python - 如何在 Windows 上创建 conda 环境快捷方式

python - 无法通过 pip 在 Python 上安装 pygame (Windows 10)

python - 有没有办法在 PyQt 应用程序结束之前调用函数?

python - 拟合阶跃函数

deep-learning - Conda Colab 收集包元数据时出错 (current_repodata.json) : failed InvalidVersionSpec: Invalid version '4.19.112+' :empty version component

python - 在终端上运行的 ros 命令找不到 python 包

python - Pygame角色移动方向

python - 我无法使用 pip 在 Windows 7 上安装 python 模块 cv2

python - 从 CVX 到 CVXPY 或 CVXOPT