首页 > 解决方案 > Anaconda 选择正确的环境但错误的 sys.path?

问题描述

我有不同的蟒蛇环境。当启动其中一个时,似乎sys.path仍然设置为某个完全错误的目录。我是否没有正确理解环境的概念,或者这是关于我的 anaconda 设置的错误?

我的环境:

fabianwerner ~$ conda env list
# conda environments:
#
base                  *  /Users/fabianwerner/anaconda3/anaconda3
my-rdkit-env             /Users/fabianwerner/anaconda3/anaconda3/envs/my-rdkit-env
openpose                 /Users/fabianwerner/anaconda3/anaconda3/envs/openpose

fabianwerner ~$ 

我激活环境“openpose”:

fabianwerner ~$ conda activate openpose
(openpose) fabianwerner ~$ 

我将尝试导入“keras”,所以让我们确保它已安装:

(openpose) fabianwerner ~$ pip list | grep -i keras
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
Keras (2.2.4)
Keras-Applications (1.0.7)
Keras-Preprocessing (1.0.9)
You are using pip version 9.0.1, however version 19.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(openpose) fabianwerner ~$ 

我启动 python 并尝试导入 keras:

(openpose) fabianwerner ~$ python
Python 3.6.5 |Anaconda, Inc.| (default, Apr 26 2018, 08:42:37) 
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import keras
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'keras'
>>> 

让我们检查一下 python 在哪里寻找模块:

>>> import sys
>>> print(sys.path)   
['', '/Users/fabianwerner/anaconda3/anaconda3/envs/my-rdkit-env/lib/python36.zip', '/Users/fabianwerner/anaconda3/anaconda3/envs/my-rdkit-env/lib/python3.6', '/Users/fabianwerner/anaconda3/anaconda3/envs/my-rdkit-env/lib/python3.6/lib-dynload', '/Users/fabianwerner/.local/lib/python3.6/site-packages', '/Users/fabianwerner/anaconda3/anaconda3/envs/my-rdkit-env/lib/python3.6/site-packages']
>>> 

所以我激活了环境'openpose',但它仍然在另一个(错误!)环境'my-rdkit-env'中寻找模块!

如何解决这个问题?

编辑:

我看不到 anaconda 设置有任何明显问题,因为 conda info -a 给出了正确的路径:

(openpose) fabianwerner ~$ conda info -a

     active environment : openpose
    active env location : /Users/fabianwerner/anaconda3/anaconda3/envs/openpose
            shell level : 2
       user config file : /Users/fabianwerner/.condarc
 populated config files : 
          conda version : 4.5.11
    conda-build version : 3.15.1
         python version : 3.7.0.final.0
       base environment : /Users/fabianwerner/anaconda3/anaconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/osx-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/osx-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/osx-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/pro/osx-64
                          https://repo.anaconda.com/pkgs/pro/noarch
          package cache : /Users/fabianwerner/anaconda3/anaconda3/pkgs
                          /Users/fabianwerner/.conda/pkgs
       envs directories : /Users/fabianwerner/anaconda3/anaconda3/envs
                          /Users/fabianwerner/.conda/envs
               platform : osx-64
             user-agent : conda/4.5.11 requests/2.19.1 CPython/3.7.0 Darwin/17.7.0 OSX/10.13.6
                UID:GID : 502:20
             netrc file : None
           offline mode : False

# conda environments:
#
base                     /Users/fabianwerner/anaconda3/anaconda3
my-rdkit-env             /Users/fabianwerner/anaconda3/anaconda3/envs/my-rdkit-env
openpose              *  /Users/fabianwerner/anaconda3/anaconda3/envs/openpose
strokinat0r              /Users/fabianwerner/anaconda3/anaconda3/envs/strokinat0r

sys.version: 3.7.0 (default, Jun 28 2018, 07:39:16) 
...
sys.prefix: /Users/fabianwerner/anaconda3/anaconda3
sys.executable: /Users/fabianwerner/anaconda3/anaconda3/bin/python
conda location: /Users/fabianwerner/anaconda3/anaconda3/lib/python3.7/site-packages/conda
conda-build: /Users/fabianwerner/anaconda3/anaconda3/bin/conda-build
conda-convert: /Users/fabianwerner/anaconda3/anaconda3/bin/conda-convert
conda-develop: /Users/fabianwerner/anaconda3/anaconda3/bin/conda-develop
conda-env: /Users/fabianwerner/anaconda3/anaconda3/bin/conda-env
conda-index: /Users/fabianwerner/anaconda3/anaconda3/bin/conda-index
conda-inspect: /Users/fabianwerner/anaconda3/anaconda3/bin/conda-inspect
conda-metapackage: /Users/fabianwerner/anaconda3/anaconda3/bin/conda-metapackage
conda-render: /Users/fabianwerner/anaconda3/anaconda3/bin/conda-render
conda-server: /Users/fabianwerner/anaconda3/anaconda3/bin/conda-server
conda-skeleton: /Users/fabianwerner/anaconda3/anaconda3/bin/conda-skeleton
user site dirs: ~/.local/lib/python3.6

CIO_TEST: <not set>
CONDA_DEFAULT_ENV: openpose
CONDA_EXE: /Users/fabianwerner/anaconda3/anaconda3/bin/conda
CONDA_PREFIX: /Users/fabianwerner/anaconda3/anaconda3/envs/openpose
CONDA_PREFIX_1: /Users/fabianwerner/anaconda3/anaconda3
CONDA_PROMPT_MODIFIER: (openpose) 
CONDA_PYTHON_EXE: /Users/fabianwerner/anaconda3/anaconda3/bin/python
CONDA_ROOT: /Users/fabianwerner/anaconda3/anaconda3
CONDA_SHLVL: 2
PATH: /Users/fabianwerner/anaconda3/anaconda3/envs/openpose/bin:/Users/fabianwerner/anaconda3/anaconda3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/GIMP-2.10.app/Contents/MacOS
REQUESTS_CA_BUNDLE: <not set>
SSL_CERT_FILE: <not set>


WARNING: could not import _license.show_info
# try:
# $ conda install -n root _license
(openpose) fabianwerner ~$ 

另外,我似乎没有与 python 相关的环境变量集:

(openpose) fabianwerner ~$ printenv | grep -i python
CONDA_PYTHON_EXE=/Users/fabianwerner/anaconda3/anaconda3/bin/python
(openpose) fabianwerner ~$ 

我的设置:

谢谢,

固件

标签: pythonpipanaconda

解决方案


您在示例中启动的 Python 解释器不是环境中的解释器。 conda info -apython version : 3.7.0.final.0,但你的翻译说Python 3.6.5

当您激活环境并运行which python它应该指向激活的 env 但可能没有时,问题应该会变得明显。

你是如何创造这些环境的?确保设置python=XX选项或新环境使用来自基本/根环境的解释器,而不是安装新的。IEconda create -n my_environment python=3.7

编辑:对不起,我只是查找并测试了conda info -a. python version : XX似乎指的是基本环境而不是当前活动的环境。

我将这个答案留在这里,因为即使我的推理似乎是错误的,它仍然可能会有所帮助。


推荐阅读