如何在已经创建的virtualenv中设置pythonpath?


106

我要编辑什么文件?我创建了一个虚拟环境。


检查它是否指向正确的目录。如果还没有,请单击“新建”按钮并创建它。

11
使用add2virtualenv命令。
2013年

5
add2virtualenv是一个virtualenvwrapper命令。它不是的一部分virtualenv
kojiro

Answers:


124

编辑#2

正确的答案是@arogachev的答案。


如果要更改PYTHONPATHvirtualenv中使用的名称,可以将以下行添加到virtualenv的bin/activate文件中:

export PYTHONPATH="/the/path/you/want"

这样,PYTHONPATH每次使用此virtualenv时都会设置新的。

编辑:( 回答@RamRachum的评论)

要将其恢复到的原始值deactivate,您可以添加

export OLD_PYTHONPATH="$PYTHONPATH"

在前面提到的行之前,然后将以下行添加到bin/postdeactivate脚本中。

export PYTHONPATH="$OLD_PYTHONPATH"

1
还会将其移除deactivate吗?
Ram Rachum 2012年

1
因此,这意味着新创建的虚拟环境具有默认值PYTHONPATH(全局环境)而不是virtualenv本地路径吗?
ducin

6
这对我来说非常有效,我没有使用virtualenvwrapper。唯一需要注意的是,我没有这样的bin / postdeactivate脚本,而是Activate具有停用功能。因此,应将代码行放在此处,并小心地将其包装在if语句中,作为函数中的其余操作。
尼可罗马基

2
virtualenv默认不执行此操作似乎很奇怪。
塞斯,

2
编辑2是骗人的!:)正确的答案是@ arjen-p-de-vries的
Berriel

73

@ s29的评论应该是一个答案:

向虚拟环境添加目录的一种方法是安装virtualenvwrapper(这对很多事情都有用),然后执行

mkvirtualenv myenv
workon myenv
add2virtualenv . #for current directory
add2virtualenv ~/my/path

如果要删除这些路径,请编辑文件 myenvhomedir/lib/python2.7/site-packages/_virtualenv_path_extensions.pth

有关virtualenvwrapper的文档可以在http://virtualenvwrapper.readthedocs.org/en/latest/中找到。

有关此功能的特定文档,请访问 http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html?highlight=add2virtualenv


6
删除:add2virtualenv -d
thecheech 2015年

1
只是将这个答案与我的答案联系起来,因为效果要好得多
mdeous,

27

您可以创建一个.pth包含要搜索的目录的文件,并将其放置在site-packages目录中。例如:

cd $(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
echo /some/library/path > some-library.pth

效果与添加/some/library/path到相同sys.path,并且保持在virtualenv设置本地。


7
我真的很喜欢这种方法。不像添加行来激活/停用一样灵活,并且不需要使用virtualenvwrapper。如果您不想调用python来查找site-packages dir,则它位于相当可预测的path上$VIRTUALENV_ROOT/lib/pythonX.Y/site-packages。.pth文件上的文档:docs.python.org/3.6/library/site.html
Alec

2
我不想输入绝对路径,因为我的工作区在文件系统中移动。而且,我的项目路径中有空格。因此,我键入了稍微修改的命令:pushd "$(venv/bin/python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")" ...path/to/project/venv/lib/python3.7/site-packages ...path/to/project echo ../../../../src > my_project.pth popd然后我停用了virtualenv,然后重新激活了。现在,我可以运行需要知道我的项目目录在哪里的项目代码。
吉姆·德拉汉

4
这是正确的答案。修改供应商提供的脚本(/bin/activate)是不当行为,安装第3方工具不如使用内置方法来实现。
红色

2
  1. 初始化您的virtualenv
cd venv

source bin/activate
  1. 只需通过输入以下命令来设置或更改python路径:
export PYTHONPATH='/home/django/srmvenv/lib/python3.4'
  1. 用于检查python路径,请在python中输入:
   python

      \>\> import sys

      \>\> sys.path


-20

它已经在这里回答-> 我的虚拟环境(python)是否导致PYTHONPATH中断?

UNIX / Linux

将“ export PYTHONPATH = / usr / local / lib / python2.0”添加到〜/ .bashrc文件,并通过键入“ source〜/ .bashrc”或“。〜/ .bashrc”将其导出。

Windows XP

1)转到控制面板2)双击系统3)转到高级选项卡4)单击环境变量

在“系统变量”窗口中,检查是否有一个名为PYTHONPATH的变量。如果已经有了,请检查它是否指向正确的目录。如果还没有,请单击“新建”按钮并创建它。

密码

另外,您也可以在代码下方执行以下操作:-

import sys
sys.path.append("/home/me/mypy") 

4
-1:这解决了用户的PYTHONPATH,而不是virtualenv的PYTHONPATH。
twneale 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.