繁体   English   中英

为什么我的 flask 应用程序在我的环境中没有安装任何模块的情况下运行?

[英]Why is my flask app running with no modules installed in my environment?

我正在使用 Anaconda 来构建环境。 我一直在使用pip install my_module ,我最近意识到这是不正确的。 我创建的环境称为dp_offfsets_environment并且我已经能够运行我在 IntelliJ 中使用链接到此环境的 SDK 编写的 flask 应用程序。

为什么是这样? 如下所示,当调用conda list时,我的环境下没有安装任何包,所以我希望我的 flask 应用程序失败。

下面显示的pip list是什么? 它是否显示安装在我的基本环境中的软件包?

您如何建议卸载这些软件包并将它们移动到实际环境中?

(dp_offsets_environment) C:\WINDOWS\system32>pip list
Package                Version
---------------------- -------
click                  8.0.3
colorama               0.4.4
cycler                 0.10.0
Flask                  2.0.2
fonttools              4.29.1
importlib-metadata     4.10.1
itsdangerous           2.0.1
Jinja2                 3.0.3
kiwisolver             1.3.1
MarkupSafe             2.0.1
matlab                 0.1
mysql-connector-python 8.0.26
packaging              21.3
pandas                 1.3.0
Pillow                 8.3.1
pip                    22.0.2
pyparsing              2.4.7
python-dateutil        2.8.1
pytz                   2021.1
setuptools             47.1.0
six                    1.16.0
typing_extensions      4.0.1
Werkzeug               2.0.2
wheel                  0.37.1
zipp                   3.7.0

(dp_offsets_environment) C:\WINDOWS\system32>conda list
# packages in environment at C:\Users\ckurtz\.conda\envs\dp_offsets_environment:
#
# Name                    Version                   Build  Channel

当您运行conda create -n dp_offsets_environment时, conda创建一个环境,即没有包。 conda不会在环境中安装pythonpip或其他任何东西。 因此,当您在激活该环境的情况下运行pip时,您仍然会得到pip首先位于您的PATH中的任何内容(很可能来自您的base环境)。

So whenever you ran pip install nothing was installed to your currently active conda env and your flask app was probably not using that conda env, but also used the python that corresponds to your pip .

您需要将python / pip安装到您的环境,然后安装到您的环境。

将此视为示例(我添加了注释### ):


(base) C:\Users\FlyingTeller>where pip
C:\Users\FlyingTeller\miniconda3\Scripts\pip.exe ### We are in base, so pip from base is found

(base) C:\Users\FlyingTeller>conda create -n someEnv
Collecting package metadata (current_repodata.json): done
Solving environment: done


Please update conda by running

    $ conda update -n base conda



## Package Plan ##

  environment location: C:\Users\FlyingTeller\miniconda3\envs\someEnv

### Note: No packages are being installed

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate someEnv
#
# To deactivate an active environment, use
#
#     $ conda deactivate


(base) C:\Users\FlyingTeller>conda activate someEnv

(someEnv) C:\Users\FlyingTeller>where pip
C:\Users\FlyingTeller\miniconda3\Scripts\pip.exe ### <----- pip still from base env

(someEnv) C:\Users\FlyingTeller>conda install python pip
Collecting package metadata (current_repodata.json): done
Solving environment: done


Please update conda by running

    $ conda update -n base conda



## Package Plan ##

  environment location: C:\Users\FlyingTeller\miniconda3\envs\someEnv

  added / updated specs:
    - pip
    - python


### Download and installation pruned
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

(someEnv) C:\Users\FlyingTeller>where pip
C:\Users\FlyingTeller\miniconda3\envs\someEnv\Scripts\pip.exe ### Only now pip is in this env
C:\Users\FlyingTeller\miniconda3\Scripts\pip.exe

(someEnv) C:\Users\FlyingTeller>

边注

我一直在使用 pip install my_module ,我最近意识到这是不正确的

这是对常见建议“不要在conda env 中使用pip ”的误解。 这个建议总是有点强烈。 没有理由避免在conda环境中一起使用pip 有充分的理由要小心并注意某些很容易破坏您的环境的事情。 anaconda.org上也有一篇关于此的好帖子。

一些调试提示:

  1. 删除本地环境,并尝试运行 pip 列表
  2. 如果它显示列表,请卸载它们。
  3. 再次创建环境,在安装新包之前激活。

对于任何回顾这一点的人,我发现我的机器上有另一个 Anaconda 实例。 我公司提供安装了 Spyder 的笔记本电脑,默认情况下,它有自己的 Anaconda 版本。 我不知道 Spyder 附带了 Anaconda,所以我在初始设置期间意外安装了两个版本的 Anaconda。 为了解决这个问题,我必须通过 go 并在我的机器上卸载 Anaconda 的两个实例,包括它们的包。 完全删除后,我重新安装了 Anaconda,我的问题得到了缓解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM