从Python路径中永久删除目录

16

最近我把一些我不想要的东西添加到了Python路径中:

export PYTHONPATH=$PYTHONPATH:/my/path

您可以使用sys.path.remove从路径中删除某些内容,但这并不像我上面的命令行语句添加的那样完全永久。

我该怎么做才能永久地删除Python路径中的目录?


os.system("export PYTHONPATH=%s"%(":".join(sys.path),)) 那应该可以用...不过我不确定你所说的“永久”是什么意思... export 通常只在重启之前有效...通常你需要在 .bashrc 文件中设置这种每次启动时执行的操作。 - Joran Beasley
只需删除这些目录即可。 - Games Brainiac
5个回答

21
如果您只是在 .bashrc 中删除“export PYTHONPATH = ...”这一行,并执行“source .bashrc”,那么这些目录仍将出现在 sys.path 中。
与在 .bashrc 中导出“export PATH”不同,当您将某些目录导出到 PYTHONPATH 中时,它们会被转储到一些文件中,Python 可以始终检查这些文件。
因此,您需要做的是“export PYTHONPATH =”(导出空字符串)并执行“source .bashrc”。这将清除您之前在 .bashrc 中导出到 PYTHONPATH 中的所有内容。

1
谢谢。以下代码对我有用: export PYTHONPATH="" && source ~/.bashrc - warriorUSP

11

首先,从终端获取您路径中的所有内容,使用以下命令:

env | grep PYTHONPATH

然后,导出您的路径并手动删除您不再需要的任何内容:

export PYTHONPATH=[在此处粘贴已更正的路径,无需方括号]

如果您重新启动会话并且未修改.bashrc中的任何内容,则可以简单地关闭并重新打开会话。


这是正确的做法,因为您始终希望在virtualenv上运行Python项目,并且不应修改系统的.bashrc文件。 - Azim

6

如果您提到的行在您的.bashrc文件中,直接删除它应该是安全的。

正如它所说的那样,“将/my/path添加到PYTHONPATH”,即使在您的.bashrc周围有其他内容,它也应该是相当安全的。


3
您的持久Python路径通常是通过像~/.bashrc这样的shell启动文件设置的。
在shell中修改PYTHONPATH变量只会更改其当前实例及其子代的值(使用“export”),但并不意味着要永久更改其值。
使用以下命令查找要修改路径的位置:
grep -l PYTHONPATH ~/.*
如果它在启动文件中硬编码,请在那里编辑它的值,生成一个新的shell,然后就完成了!
或者,可以通过引用指向另一个位置的.pth文件将路径添加到Python的路径中。
如果是这种情况,从Python的路径中永久删除它应该很简单,只需删除此文件即可。

1
这是给Windows用户的。如果您使用pip install --user -e <package>安装了任何自定义模块,那么该模块路径可以在.pth文件中找到。通常它被命名为easy-install.pth,并且可以在site-packages目录中找到。尝试从此文件中删除条目,然后再次检查sys.path

这也适用于MacOS——我的sys.path被/usr/local/lib/python3.9/site-packages/easy-install.pth修改了。感谢您发布此评论,否则我将永远找不到它! - Michael Brundage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接