Python解释器PATH奇怪。不能使用django

时间:2016-08-31 19:04:03

标签: python django environment-variables windows-10

我有两个不同解释器的三个Python环境。第一个是我的c:中的基本Python27。第二个是Anaconda解释器,它有自己的环境,另一个环境是\ envs \目录。我指示我的PYTHONPATH变量指向不在\ envs \文件夹中的Anaconda解释器。 enter image description here

我还将PATH变量设置为该环境enter image description here

中的scripts目录

然而,当我运行Django时,我收到一条关于版本差异的消息。我认为这是因为Django在我的C:\目录Python27中使用了解释器。当我在cmd中回显我的PATH环境变量时,这就是我所看到的:

C:\Program Files (x86)\ActiveState Komodo Edit 10\;C:\Program Files (x86)\ActiveState Komodo IDE 10\;
C:\Program Files\MATLAB\R2014a\bin\win64;
C:\ProgramData\Oracle\Java\javapath;
c:\Program Files (x86)\Intel\iCLS Client\;
c:\Program Files\Intel\iCLS Client\;
C:\Windows\system32;C:\Windows;
C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;
C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Bin;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;
C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;
**C:\Python27**;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\WINDOWS\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files (x86)\Skype\Phone\;
C:\Program Files\MATLAB\R2016a\runtime\win64;
C:\Program Files\MATLAB\R2016a\bin;
C:\WINDOWS\system32;
C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;
C:\Users\jackf_000\sw\FFMPEG\bin;
C:**\Users\jackf_000\sw\Anaconda2\Scripts\**;

C:\ cygwin64 \ BIN; C:\用户\ jackf_000 \应用程序数据\本地\微软\ WindowsApps;

当我在cmd中运行python并导入os以查看可执行文件时,我得到以下输出:

C:\Users\jackf_000>python
Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.executable
'C:\\Python27\\python.exe'

如果我在控制面板窗口的PATH中没有指定它,那么为什么在Anaconda之前的PATH变量中来自C:\的Python解释器?我如何指定我希望Django在Anaconda环境中查找它需要的内容,或者使用pip将Django安装到C:\ Python27?目前,pip会将所有软件包安装到Anaconda环境中。

1 个答案:

答案 0 :(得分:1)

因为python 2.7路径是在系统环境变量PATH中设置的。您正在编辑您的用户变量(这是奇怪的配置,因为它们包含仅在系统路径中找到的重复内容,例如C:\windows\system32

如果您输入where python,您可能会得到:

C:\Python27\python.exe

(编辑:你真的得到了这个价值,因为你回答了我的评论)

如果您输入where pip,您可能会得到:

C:\users\jackf_000\sw\anaconda2\scripts\pip.exe

解释了在anaconda2包中的pip installs包

要在路径中获取anaconda python,您需要添加C:\users\jackf_000\sw\anaconda2而不是包含pip的脚本子目录。

然后,如果您键入where python,您可能会得到:

C:\Python27\python.exe
C:\users\jackf_000\sw\anaconda2\python.exe

但这还不够,因为......

首先是系统路径。 PATH是一个特殊的env变量,你不会用你的用户配置文件覆盖它,只附加dirs。拥有一个用户PATH变量和一个系统PATH变量是完全正常的。

另一方面,假设系统变量PYTHONPATH不能取悦您,您可以选择通过在用户变量中设置完全不同的替换它来替换它。这将取代路径,而不是附加到它们,除非你在某处添加;%PYTHONPATH%PYTHONPATH是路径变量,但是Windows不知道,它没什么特别的)。并且PYTHONPATH不影响将加载哪个可执行文件,所以暂时忘记它。

2个解决方案:

  1. 修改系统路径(需要管理员)添加anaconda是在python 2.7之前(不推荐)
  2. 运行需要带有.bat文件的anaconda的应用程序,方法如下:

    set PATH=C:\users\jackf_000\sw\anaconda2;%PATH% rem now run the command which needs anaconda python first