路径找不到Python或软件包

时间:2018-12-21 17:08:04

标签: python windows anaconda git-bash

我是Windows的新手,正在使用命令行。我对路径的工作方式有疑问。

我在Windows 10上使用Anaconda安装了Python 3,并且使用的虚拟环境似乎无法识别python。

$ python --version
bash: python: command not found

在命令行中,安装了Python,但是许多包(例如Flask和Pandas)也无法识别。我使用了pip install,可以正常工作

$ pip install flask
Requirement already satisfied: flask in c:\users\dta\anaconda3\lib\site-packages (1.0.2)
Requirement already satisfied: click>=5.1 in c:\users\dta\anaconda3\lib\site-packages (from flask) (6.7)
Requirement already satisfied: itsdangerous>=0.24 in c:\users\dta\anaconda3\lib\site-packages (from flask) (0.24)
Requirement already satisfied: Werkzeug>=0.14 in c:\users\dta\anaconda3\lib\site-packages (from flask) (0.14.1)
Requirement already satisfied: Jinja2>=2.10 in c:\users\dta\anaconda3\lib\site-packages (from flask) (2.10)
Requirement already satisfied: MarkupSafe>=0.23 in c:\users\dta\anaconda3\lib\site-packages (from Jinja2>=2.10->flask) (1.0)
twisted 18.7.0 requires PyHamcrest>=1.9.0, which is not installed.
You are using pip version 10.0.1, however version 18.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

但是随后使用这些软件包中的任何一个运行程序都无法正常工作,我得到的结果如下:

Traceback (most recent call last):
  File "app.py", line 1, in <module>
    import flask
ModuleNotFoundError: No module named 'flask'

似乎已设置路径,但是命令行正确识别路径存在一些问题。我先卸载了Python,然后重新安装了Python,并确保在安装过程中选中“将Python添加到PATH”框,但没有任何反应。有想法该怎么解决这个吗?

1 个答案:

答案 0 :(得分:0)

您最有可能在路径上没有Anaconda。试试:

echo %PATH%

如果Anaconda不在那里,那就做

setx PATH “%PATH%;c:\users\dta\anaconda3\scripts;c:\users\dta\anaconda3”

这会将anaconda设置为Path。关闭并重新启动CMD

如果您有其他环境,请尝试

conda env list

要激活您的环境:

conda activate environmentName

请记住在点子上使用conda install ...,因为它会处理兼容性问题的升级和降级。

如果Anaconda存在,那么您还必须在Anaconda之前安装另一个Python。除非您重新安排Anaconda在其之前排在第一位,否则它将在Anaconda上进行选择。

如果您不希望这样做,只需创建一个环境即可:

conda create -n awesome python=3.7

然后激活它并在其中安装软件包:

conda activate awesome
conda install flask
python -V # Python 3.7

要查看Python查找软件包的位置,请执行以下操作:

python -c "import sys;print(sys.path)"

查看它在哪里寻找软件包。