在Cygwin中为Anaconda永久设置Python路径

2024-04-29 09:33:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的Windows7机器上安装水蟒。我经常使用cygwin来执行命令行工作,我想从那里管理Anaconda。我已经完成了图形安装程序的工作,没有任何问题,并选中了必要的框,以将我的默认路径重置为python的安装。我继续检查python在哪里,最初我得到了这个。。。

$ which python
/usr/bin/python

从这里开始,python工作得很好。。。

$ python
Python 2.7.5 (default, Oct  2 2013, 22:34:09)
[GCC 4.8.1] on cygwin
Type "help", "copyright", "credits" or "license" for more information.

但我想从水蟒那里工作,所以我应该重新定义我的道路。。。

$ export PATH=/cygdrive/c/anaconda:$PATH
$ which python
/cygdrive/c/anaconda/python

现在我应该可以走了,但是当我尝试进入python时,它就挂了

$ python

知道为什么会这样吗?详细返回,下面。。。

$ python -v
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# C:\anaconda\lib\site.pyc matches C:\anaconda\lib\site.py
import site # precompiled from C:\anaconda\lib\site.pyc
# C:\anaconda\lib\os.pyc matches C:\anaconda\lib\os.py
import os # precompiled from C:\anaconda\lib\os.pyc
import errno # builtin
import nt # builtin
# C:\anaconda\lib\ntpath.pyc matches C:\anaconda\lib\ntpath.py
import ntpath # precompiled from C:\anaconda\lib\ntpath.pyc
# C:\anaconda\lib\stat.pyc matches C:\anaconda\lib\stat.py
import stat # precompiled from C:\anaconda\lib\stat.pyc
# C:\anaconda\lib\genericpath.pyc matches C:\anaconda\lib\genericpath.py
import genericpath # precompiled from C:\anaconda\lib\genericpath.pyc
# C:\anaconda\lib\warnings.pyc matches C:\anaconda\lib\warnings.py
import warnings # precompiled from C:\anaconda\lib\warnings.pyc
# C:\anaconda\lib\linecache.pyc matches C:\anaconda\lib\linecache.py
import linecache # precompiled from C:\anaconda\lib\linecache.pyc
# C:\anaconda\lib\types.pyc matches C:\anaconda\lib\types.py
import types # precompiled from C:\anaconda\lib\types.pyc
# C:\anaconda\lib\UserDict.pyc matches C:\anaconda\lib\UserDict.py
import UserDict # precompiled from C:\anaconda\lib\UserDict.pyc
# C:\anaconda\lib\_abcoll.pyc matches C:\anaconda\lib\_abcoll.py
import _abcoll # precompiled from C:\anaconda\lib\_abcoll.pyc
# C:\anaconda\lib\abc.pyc matches C:\anaconda\lib\abc.py
import abc # precompiled from C:\anaconda\lib\abc.pyc
# C:\anaconda\lib\_weakrefset.pyc matches C:\anaconda\lib\_weakrefset.py
import _weakrefset # precompiled from C:\anaconda\lib\_weakrefset.pyc
import _weakref # builtin
# C:\anaconda\lib\copy_reg.pyc matches C:\anaconda\lib\copy_reg.py
import copy_reg # precompiled from C:\anaconda\lib\copy_reg.pyc
# C:\anaconda\lib\traceback.pyc matches C:\anaconda\lib\traceback.py
import traceback # precompiled from C:\anaconda\lib\traceback.pyc
# C:\anaconda\lib\sysconfig.pyc matches C:\anaconda\lib\sysconfig.py
import sysconfig # precompiled from C:\anaconda\lib\sysconfig.pyc
# C:\anaconda\lib\re.pyc matches C:\anaconda\lib\re.py
import re # precompiled from C:\anaconda\lib\re.pyc
# C:\anaconda\lib\sre_compile.pyc matches C:\anaconda\lib\sre_compile.py
import sre_compile # precompiled from C:\anaconda\lib\sre_compile.pyc
import _sre # builtin
# C:\anaconda\lib\sre_parse.pyc matches C:\anaconda\lib\sre_parse.py
import sre_parse # precompiled from C:\anaconda\lib\sre_parse.pyc
# C:\anaconda\lib\sre_constants.pyc matches C:\anaconda\lib\sre_constants.py
import sre_constants # precompiled from C:\anaconda\lib\sre_constants.pyc
# C:\anaconda\lib\locale.pyc matches C:\anaconda\lib\locale.py
import locale # precompiled from C:\anaconda\lib\locale.pyc
import encodings # directory C:\anaconda\lib\encodings
# C:\anaconda\lib\encodings\__init__.pyc matches C:\anaconda\lib\encodings\__init__.py
import encodings # precompiled from C:\anaconda\lib\encodings\__init__.pyc
# C:\anaconda\lib\codecs.pyc matches C:\anaconda\lib\codecs.py
import codecs # precompiled from C:\anaconda\lib\codecs.pyc
import _codecs # builtin
# C:\anaconda\lib\encodings\aliases.pyc matches C:\anaconda\lib\encodings\aliases.py
import encodings.aliases # precompiled from C:\anaconda\lib\encodings\aliases.pyc
import operator # builtin
# C:\anaconda\lib\functools.pyc matches C:\anaconda\lib\functools.py
import functools # precompiled from C:\anaconda\lib\functools.pyc
import _functools # builtin
import _locale # builtin
# C:\anaconda\lib\encodings\cp1252.pyc matches C:\anaconda\lib\encodings\cp1252.py
import encodings.cp1252 # precompiled from C:\anaconda\lib\encodings\cp1252.pyc
# zipimport: found 13 names in C:\anaconda\lib\site-packages\runipy-0.1.0-py2.7.egg
# zipimport: found 144 names in C:\anaconda\lib\site-packages\setuptools-3.6-py2.7.egg
Python 2.7.7 |Anaconda 2.0.1 (64-bit)| (default, Jun 11 2014, 10:40:02) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and htt

我遇到的另一个问题(可能与此相关)是每次关闭/打开cygwin时都需要重置路径。我在.bashrc和.profile中输入了以下文本,以尝试永久设置路径:

# Set path to python from anaconda install
export PATH=/cygdrive/c/anaconda:$PATH

在打开和关闭cygwin之后,我返回:

$ which python
/usr/bin/python

这是否与设置某些系统环境变量有关?


Tags: frompyimportlibsiteanacondalocalepyc
3条回答

我的Cygwin/Windows 7系统在安装anaconda时也遇到了问题。有效的方法如下:

  1. 编辑了~/.bashrc。在下面的文件底部添加。

    export PATH=/cygdrive/c/Anaconda:$PATH

  2. 这通过在Cygwin的控制台中输入which python将Cygwin的python映射到anaconda发行版作为证明。但是,当启动python时,它会挂断,迫使我^C退出命令。我发现python -i将毫无问题地启动交互式python解释器。

路径

关于您的路径问题,请参见Installing anaconda to use with windows了解如何修复该问题。或者,您可以运行/cygdrive/c/Anaconda/python.exe来启动Anaconda/windows python,并让标准的python指向cygwin版本。

请注意,在internet上给出的建议中,很少有包含对PYTHONPATH的必要更改:如果使用anaconda/windows python,则还需要anaconda python库。如果你把事情搞混了,像numpy这样的二进制模块肯定会崩溃或出现错误行为。检查这一点最简单的方法是在cygwin中安装Conda中不需要的模块,并测试是否可以从anaconda python中导入该模块。如果你可以,你的道路是错误的。

Anaconda python会自动将c:\Anconda添加到PYTHONPATH中,但是如果您将其设置为提供CYGWIN python库,则会在Anaconda libs之前找到这些库。试试看

import sys
sys.path

终点站

然而,这也是一个终端问题:Anaconda(Windows)python需要一个Windows shell,而现代的cygwin shell就像一个xterm,因此非常不同。通过运行python --help来诊断这个问题,如果这有效,但是python挂起,那么交互提示就是问题所在。这意味着您可以运行python程序,只是不能与它们交互。

一种解决方法是使用cygwin bash shell而不是cygwin terminal(两者都在“开始”菜单中的Cygwin组下)。它们看起来非常相似,但是bash shell中的字体不那么漂亮,并且不能使窗口宽度超过80个字符(就像所有其他的CMD窗口一样,从来没有理解过这个“特性”)。这是cygwin bash,运行在一个CMD窗口中,您的anaconda python将是交互式的。cygwin terminal为您提供了一个运行在putty派生程序中的bash shell,它模仿xterm,不能被anaconda python使用。

要在Cygwin中使用交互式Python shell,请使用-I选项。

为了从Anaconda安装中获得它,我使用了上面建议的步骤:

$ export PATH=/cygdrive/c/anaconda:$PATH
$ which python
/cygdrive/c/anaconda/python

然后我在Cygwin中使用-I选项启动python:

$ python -i
Python 2.7.8 |Anaconda 2.1.0 (64-bit)| (default, Jul  2 2014, 15:12:11) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>>>

图书馆也运转良好。例如,现在可以导入熊猫库(已通过Anaconda安装)。

>>>> import pandas
>>>> pandas.DataFrame
<class 'pandas.core.frame.DataFrame'>

现在为了使这个永久化,我在bashrc文件中添加了路径:

$ echo 'export PATH=/cygdrive/c/anaconda:$PATH' >> .bashrc
$ source .bashrc
$ which python
/cygdrive/c/anaconda/python

我希望这能有帮助。

相关问题 更多 >