我想改变python导入包的顺序。我正在使用anaconda来管理python包。在这种情况下,我认为在激活env之后,从属于某个env的包应该比我的本地python具有更高的优先级。让我在下面重现我的案例。
操作系统:Ubuntu 16.04,python版本:3.5,包管理器:anaconda3
$: source activate myenv
(myenv) $: which python
~/.conda/envs/myenv/bin/python
(myenv) $:python
>>> from sys import path
>>> print (path)
~/.conda/envs/myenv/lib/python35.zip
~/.conda/envs/myenv/lib/python3.5
~/.conda/envs/myenv/lib/python3.5/plat-linux
~/.conda/envs/myenv/lib/python3.5/lib-dynload
~/.local/lib/python3.5/site-packages
~/.conda/envs/myenv/lib/python3.5/site-packages
当涉及到两个路径以下时,两者都具有相同的包并且具有不同的版本。例如,前者有tensorflow-1.3,后者有tensorflow-1.4。在这种情况下,当我导入tensorflow时,前者中的一个被导入。
(myenv) $: python
>>> import tensorflow as tf
>>> print(tf.__version__)
'1.3.0'
>>> print(tf)
<module 'tensorflow' from '~/.local/lib/python3.5/site-packages/tensorflow/__init__.py'>
我希望导入的是'1.4.0',而不是'1.3.0',我认为它应该是sys.path中列出的顺序。那么,我该如何手动和永久地改变订单呢?
答案 0 :(得分:1)
我认为您所描述的问题已在Anaconda故障排除文档中介绍,此处:Resolution: For Python packages, remove any site-specific directories
如果您只想使用Anaconda虚拟环境中安装的tensorflow版本(并忽略~/.local/lib/python
文件夹中的版本),可以在Anaconda环境中export PYTHONNOUSERSITE=True
告诉python ignore your user site packages directory。
如果您希望每次在Anaconda环境中运行时自动完成此操作,您可以按照Anaconda文档中的说明保存环境变量,此处:Saving environment variables