Python 从virtualenv内的“我的路径”中永久删除路径条目
关于如何在virtualenv中为路径添加路径,我已经找到了很多答案,但对于如何删除路径,却没有一个答案。我在一个virtualenv和以下代码片段中工作:Python 从virtualenv内的“我的路径”中永久删除路径条目,python,bash,path,environment-variables,virtualenv,Python,Bash,Path,Environment Variables,Virtualenv,关于如何在virtualenv中为路径添加路径,我已经找到了很多答案,但对于如何删除路径,却没有一个答案。我在一个virtualenv和以下代码片段中工作: import sys print sys.path 印刷品: ['', '/home/prk/Enthought/Canopy_64bit/User/lib/python2.7/site-packages', '', '/home/prk/anaconda2/envs/dato-env/lib/python27.zip', '
import sys
print sys.path
印刷品:
['',
'/home/prk/Enthought/Canopy_64bit/User/lib/python2.7/site-packages',
'',
'/home/prk/anaconda2/envs/dato-env/lib/python27.zip',
'/home/prk/anaconda2/envs/dato-env/lib/python2.7',
'/home/prk/anaconda2/envs/dato-env/lib/python2.7/plat-linux2',
'/home/prk/anaconda2/envs/dato-env/lib/python2.7/lib-tk',
'/home/prk/anaconda2/envs/dato-env/lib/python2.7/lib-old',
'/home/prk/anaconda2/envs/dato-env/lib/python2.7/lib-dynload',
'/home/prk/anaconda2/envs/dato-env/lib/python2.7/site-packages/setuptools-18.4-py2.7.egg',
'/home/prk/anaconda2/envs/dato-env/lib/python2.7/site-packages',
'/home/prk/anaconda2/envs/dato-env/lib/python2.7/site-packages/IPython/extensions',
'/home/prk/.ipython']
现在我想从这个列表中永久删除'/home/prk/enthught/candoy_64bit/User/lib/python2.7/site packages'
。实际上,问题是我在python代码中导入了一个特定的包(比如一个特定的包X)。现在,这个包X位于我的enthund
路径(上面列表中的第一条路径)和anaconda2
路径(上面列表中的第二条路径)内。现在,当我导入X时,我希望它访问anaconda
路径中的X,但由于它在上面的列表中按顺序搜索导入的包,因此它首先在enthund
中找到它,并尝试在该路径中执行代码。我可以想出三种方法来解决这个问题:
'/home/prk/enthught/Canopy_64bit/User/lib/python2.7/site packages'
。我想我会编辑virtualenv的初始化文件,以删除或重新排序路径
,使其更符合我的喜好,但我不知道如何做到这一点。有效的临时修复方法是:
import sys
del sys.path[1]
import X
但是在我的virtualenv中的每个.py
文件中都放上它是不可能的anaconda
路径添加到enthund
路径之前。我阅读了.pth文件
。我将扩展名为.pth
的文件放在我的virtualenv的site packages文件夹中(/home/prk/anaconda2/envs/dato env/lib/python2.7/site packages
),其中包含我的包的目录的绝对路径是它唯一的内容。这不管用。我在其中一条评论中读到它在linux上不起作用enthund
路径添加到我列表的顶部。因为我在virtualenv中工作,所以列表不应该只包含我的virtualenv(在dato env中)中的路径,因为除了第一个路径之外,所有其他路径都是$PATH
显示:
bash: /home/prk/anaconda2/envs/dato-env/bin:
/home/prk/Enthought/Canopy_64bit/User/bin:
/usr/local/sbin:/usr/local/bin:/usr/sbin:
/usr/bin:/sbin:/bin:/usr/local/sbin:
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
/bin:/usr/games: No such file or directory
$PYTHONPATH
和$PYTHONHOME
不显示任何内容。您可以编辑虚拟环境的“激活”bash文件以删除所需的目录。为此,请基本遵循以下步骤:
../your_virtual_environment_folder/bin/activate
directory_to_remove=/home/prk/Enthought/Canopy_64bit/User/bin
PATH=:$PATH:
PATH=${PATH//:$directory_to_remove:/:}
PATH=${PATH#:}; PATH=${PATH%:}`
您可以编辑虚拟环境的“激活”bash文件以删除所需的目录。为此,请基本遵循以下步骤:
../your_virtual_environment_folder/bin/activate
directory_to_remove=/home/prk/Enthought/Canopy_64bit/User/bin
PATH=:$PATH:
PATH=${PATH//:$directory_to_remove:/:}
PATH=${PATH#:}; PATH=${PATH%:}`
虚拟环境中的env var
PYTHONPATH
和PYTHONHOME
的值是多少?使用-s
运行python时会发生什么情况(不要将用户站点目录添加到sys.path
)您使用的是哪个版本的virtualenv
?@MartinKonecny Check edit。你的问题的第二部分怎么说?激活我的dato env(source activate dato env)后,我正在打开一个ipython笔记本并处理它。在虚拟环境中,env varPYTHONPATH
和PYTHONHOME
的值是多少?使用-s
运行python时会发生什么情况(不要将用户站点目录添加到sys.path
)您使用的是哪个版本的virtualenv
?@MartinKonecny Check edit。你的问题的第二部分怎么说?激活我的dato env(源激活dato env)后,我打开了一个ipython笔记本并正在处理它。