[英]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
不会在环境中安装python
、 pip
或其他任何东西。 因此,当您在激活该环境的情况下运行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上也有一篇关于此的好帖子。
一些调试提示:
对于任何回顾这一点的人,我发现我的机器上有另一个 Anaconda 实例。 我公司提供安装了 Spyder 的笔记本电脑,默认情况下,它有自己的 Anaconda 版本。 我不知道 Spyder 附带了 Anaconda,所以我在初始设置期间意外安装了两个版本的 Anaconda。 为了解决这个问题,我必须通过 go 并在我的机器上卸载 Anaconda 的两个实例,包括它们的包。 完全删除后,我重新安装了 Anaconda,我的问题得到了缓解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.