python 版本和 python sys.path
python version and python sys.path
我安装了 anaconda,不想使用系统 python 及其模块。
假设anaconda在独立环境下运行python。然而,
$ which python
/home/user/anaconda/bin/python
$ python --version
Python 2.7.3
$ ~/anaconda/bin/python --version
Python 2.7.11 :: Anaconda 2.5.0 (64-bit)
如您所见,python
链接到版本 2.7.3 的系统 python,尽管 which
表明它指向 anaconda python。
$ python
Python 2.7.3 (default, Mar 13 2014, 11:03:55)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys;
>>> from pprint import pprint as p
>>> p(sys.path)
['',
'/soft/python/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/mock-1.0.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/nose-1.3.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/pyparsing-2.0.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/tornado-3.2-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/six-1.6.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgui-1.0_r6798_20120508-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.utils-1.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdffit2-1.0_r6773_20111122-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.Structure-1.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgetx-1.0_r2152_20130314-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/rasterstats-0.7.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/rasterio-0.24.1-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/Shapely-1.5.9-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/snuggs-1.3.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/cligj-0.2.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/affine-1.2.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/click-4.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/progress-1.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/h5py-2.5.0-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages',
'/home/user',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7']
当然python路径中有很多系统路径。但是对于蟒蛇 python,
$ ~/anaconda/bin/python
Python 2.7.11 |Anaconda 2.5.0 (64-bit)| (default, Dec 6 2015, 18:08:32)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
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://anaconda.org
>>>
>>> import sys
>>> from pprint import pprint as p
>>> p(sys.path)
['',
'/soft/python/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/mock-1.0.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/nose-1.3.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/pyparsing-2.0.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/tornado-3.2-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/six-1.6.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgui-1.0_r6798_20120508-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.utils-1.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdffit2-1.0_r6773_20111122-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.Structure-1.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgetx-1.0_r2152_20130314-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/rasterstats-0.7.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/rasterio-0.24.1-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/Shapely-1.5.9-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/snuggs-1.3.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/cligj-0.2.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/affine-1.2.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/click-4.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/progress-1.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/h5py-2.5.0-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages',
'/home/user',
'/home/user/anaconda/lib/python27.zip',
'/home/user/anaconda/lib/python2.7',
'/home/user/anaconda/lib/python2.7/plat-linux2',
'/home/user/anaconda/lib/python2.7/lib-tk',
'/home/user/anaconda/lib/python2.7/lib-old',
'/home/user/anaconda/lib/python2.7/lib-dynload',
'/home/user/anaconda/lib/python2.7/site-packages',
'/home/user/anaconda/lib/python2.7/site-packages/Sphinx-1.3.5-py2.7.egg',
'/home/user/anaconda/lib/python2.7/site-packages/cryptography-1.0.2-py2.7-linux-x86_64.egg',
'/home/user/anaconda/lib/python2.7/site-packages/flake8-2.5.1-py2.7.egg',
'/home/user/anaconda/lib/python2.7/site-packages/mccabe-0.3.1-py2.7.egg',
'/home/user/anaconda/lib/python2.7/site-packages/setuptools-20.1.1-py2.7.egg']
还有很多系统路径。
如果我用
过滤 sys.path
sys.path = filter(lambda (x): x.startswith('/home/user/anaconda'), sys.path)
python 路径是干净的,但会有很多 ImportErrors。
我已经导出$PYTHONPATH=
.
- 执行
type python
检查别名(或函数)。
- 执行
hash -r
更新$PATH
散列table,然后重试which
。
一般来说,使用 type
可能比 which
更好,因为前者是 shell 内置的并且可以访问 shell 的PATH 哈希 table、函数和别名。
如果您特别想要查找外部程序(如 which
所做的那样),您可以使用
type -p
也就是说which
.
比较靠谱
如果你想找到所有 executable 命令的位置,你可以使用
type -a
如果您想使用 Python3,请创建指向 Python 的符号链接并在基于 Debian 的 Linus 发行版上创建 pip。
sudo ln -s /usr/bin/python3 /usr/bin/python
sudo ln -s /usr/bin/pip3 /usr/bin/pip
您是否设置并激活了 Conda 环境?
基本上,您需要在要创建项目的文件夹中,启动终端并设置 Conda 环境
conda create -n yourenvname python=x.x anaconda
在这里您可以为您的环境选择一个名称并设置 python 版本、anaconda 和该环境所需的任何其他包。然后 Conda 将为您安装所有这些并创建环境。
当您需要使用环境时,只需通过以下方式激活即可:
activate yourenvname
阅读更多:https://uoa-eresearch.github.io/eresearch-cookbook/recipe/2014/11/20/conda/
我安装了 anaconda,不想使用系统 python 及其模块。
假设anaconda在独立环境下运行python。然而,
$ which python
/home/user/anaconda/bin/python
$ python --version
Python 2.7.3
$ ~/anaconda/bin/python --version
Python 2.7.11 :: Anaconda 2.5.0 (64-bit)
如您所见,python
链接到版本 2.7.3 的系统 python,尽管 which
表明它指向 anaconda python。
$ python
Python 2.7.3 (default, Mar 13 2014, 11:03:55)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys;
>>> from pprint import pprint as p
>>> p(sys.path)
['',
'/soft/python/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/mock-1.0.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/nose-1.3.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/pyparsing-2.0.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/tornado-3.2-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/six-1.6.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgui-1.0_r6798_20120508-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.utils-1.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdffit2-1.0_r6773_20111122-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.Structure-1.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgetx-1.0_r2152_20130314-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/rasterstats-0.7.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/rasterio-0.24.1-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/Shapely-1.5.9-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/snuggs-1.3.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/cligj-0.2.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/affine-1.2.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/click-4.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/progress-1.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/h5py-2.5.0-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages',
'/home/user',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7']
当然python路径中有很多系统路径。但是对于蟒蛇 python,
$ ~/anaconda/bin/python
Python 2.7.11 |Anaconda 2.5.0 (64-bit)| (default, Dec 6 2015, 18:08:32)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
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://anaconda.org
>>>
>>> import sys
>>> from pprint import pprint as p
>>> p(sys.path)
['',
'/soft/python/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/mock-1.0.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/nose-1.3.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/pyparsing-2.0.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/tornado-3.2-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/six-1.6.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgui-1.0_r6798_20120508-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.utils-1.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdffit2-1.0_r6773_20111122-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.Structure-1.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgetx-1.0_r2152_20130314-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/rasterstats-0.7.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/rasterio-0.24.1-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/Shapely-1.5.9-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/snuggs-1.3.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/cligj-0.2.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/affine-1.2.0-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/click-4.1-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/progress-1.2-py2.7.egg',
'/soft/python/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages/h5py-2.5.0-py2.7-linux-x86_64.egg',
'/soft/python/lib/python2.7/site-packages',
'/home/user',
'/home/user/anaconda/lib/python27.zip',
'/home/user/anaconda/lib/python2.7',
'/home/user/anaconda/lib/python2.7/plat-linux2',
'/home/user/anaconda/lib/python2.7/lib-tk',
'/home/user/anaconda/lib/python2.7/lib-old',
'/home/user/anaconda/lib/python2.7/lib-dynload',
'/home/user/anaconda/lib/python2.7/site-packages',
'/home/user/anaconda/lib/python2.7/site-packages/Sphinx-1.3.5-py2.7.egg',
'/home/user/anaconda/lib/python2.7/site-packages/cryptography-1.0.2-py2.7-linux-x86_64.egg',
'/home/user/anaconda/lib/python2.7/site-packages/flake8-2.5.1-py2.7.egg',
'/home/user/anaconda/lib/python2.7/site-packages/mccabe-0.3.1-py2.7.egg',
'/home/user/anaconda/lib/python2.7/site-packages/setuptools-20.1.1-py2.7.egg']
还有很多系统路径。
如果我用
过滤 sys.pathsys.path = filter(lambda (x): x.startswith('/home/user/anaconda'), sys.path)
python 路径是干净的,但会有很多 ImportErrors。
我已经导出$PYTHONPATH=
.
- 执行
type python
检查别名(或函数)。 - 执行
hash -r
更新$PATH
散列table,然后重试which
。
一般来说,使用 type
可能比 which
更好,因为前者是 shell 内置的并且可以访问 shell 的PATH 哈希 table、函数和别名。
如果您特别想要查找外部程序(如
which
所做的那样),您可以使用type -p
也就是说
which
. 比较靠谱
如果你想找到所有 executable 命令的位置,你可以使用
type -a
如果您想使用 Python3,请创建指向 Python 的符号链接并在基于 Debian 的 Linus 发行版上创建 pip。
sudo ln -s /usr/bin/python3 /usr/bin/python
sudo ln -s /usr/bin/pip3 /usr/bin/pip
您是否设置并激活了 Conda 环境?
基本上,您需要在要创建项目的文件夹中,启动终端并设置 Conda 环境
conda create -n yourenvname python=x.x anaconda
在这里您可以为您的环境选择一个名称并设置 python 版本、anaconda 和该环境所需的任何其他包。然后 Conda 将为您安装所有这些并创建环境。
当您需要使用环境时,只需通过以下方式激活即可:
activate yourenvname
阅读更多:https://uoa-eresearch.github.io/eresearch-cookbook/recipe/2014/11/20/conda/