python - 如何确保 conda 的特定于环境的路径位于 sys.path 的顶部?
问题描述
我有一个 conda 环境,myenv
. 我意识到这个环境中的 Python 解释器试图从/Users/me/.local/lib/python3.8/site-packages
之前导入包/usr/local/anaconda3/envs/myenv/lib/python3.8/site-packages
。我本来希望所有特定于环境的路径都附加到sys.path
. 这是预期的行为吗?在这种情况下,我想导入 numpy、scipy 和 numexpr 的 conda 安装版本,因为它们使用英特尔 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 info
列为python 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
推荐阅读
- scikit-learn - 逻辑回归 - class_weight 平衡与 dict 论点
- python - 使用 pd.merge_asof() 时索引丢失
- php - Magento 2:自动添加产品并运送到单独的地址
- sql - 使用 SQL 查询更新列数据
- python - 使用 NumPy 写下分段函数?
- ruby - quickbooks-ruby 没有为我提供代码
- javascript - JavaScript 中的 Excel 速率函数 - FormulaJS 错误
- python - scrapy response.txt 没有 HTML 正文
- c# - 保存和恢复 UWP AppWindow 的大小
- openapi - 如何在openapi-generator中获取不同组中的参数