在Python中将文件路径永久添加到sys.path

在Python中将文件路径永久添加到sys.path,python,sys.path,Python,Sys.path,我有一个名为example\u file.py的文件,我想从其他各种文件中使用它,所以我决定将example\u file.py添加到sys.path中,并将此文件导入另一个文件以使用该文件。为此,我在IPython中运行了以下命令 import sys sys.path sys.path.append('/path/to/the/example_file.py') print(sys.path) 我可以看到刚才添加的路径,当我尝试从另一个目录路径导入此文件时,如下所示: import exa

我有一个名为
example\u file.py
的文件,我想从其他各种文件中使用它,所以我决定将
example\u file.py
添加到
sys.path
中,并将此文件导入另一个文件以使用该文件。为此,我在IPython中运行了以下命令

import sys
sys.path
sys.path.append('/path/to/the/example_file.py')
print(sys.path)
我可以看到刚才添加的路径,当我尝试从另一个目录路径导入此文件时,如下所示:

import example_file

它工作得很好,但一旦我从IPython出来,再次输入,并检查了
sys.path
,我发现我添加的路径不存在,那么如何在Python中永久添加sys.path的路径呢?

有几种方法。最简单的方法之一是创建
my paths.pth
文件(如上所述)。这只是一个扩展名为
.pth
的文件,您可以将其放入系统
站点软件包
目录中。在文件的每一行上都放置一个目录名,这样就可以在其中放置一行,带有
/path/to/the/
,它会将该目录添加到路径中

您还可以使用PYTHONPATH环境变量,该变量类似于系统路径变量,但包含将添加到
sys.PATH
的目录。看


请注意,无论您做什么,
sys.path
都包含目录而不是文件。您不能“将文件添加到
sys.path
”。您总是添加其目录,然后可以导入该文件。

这种方法对我很有效:

添加您喜欢的路径:

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add
检查:您可以运行“导出”命令并检查输出,也可以使用此命令进行检查:

python -c "import sys; print(sys.path)"

在以下文件中的一个windows发行版中:
/python38.\u pth

有以下几行:

python38.zip
.
./lib
./lib/site-packages

# Uncomment to run site.main() automatically
#import site
因此,通过该内容,可产生以下结果:

Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
>>> import sys
>>> sys.path
['C:\\Program Files\\Applications\\python_3_8_2\\python38.zip', 'C:\\Program Files\\Applications\\python_3_8_2', 'C:\\Program Files\\Applications\\python_3_8_2\\./lib', 'C:\\Program Files\\Applications\\python_3_8_2\\./lib/site-packages']
因此,在将这一行添加到文件:
/lib/site packages/win32ctypes
后,它出现在路径中:

Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
>>> import sys
>>> sys.path
['C:\\Program Files\\Applications\\python_3_8_2\\python38.zip', 'C:\\Program Files\\Applications\\python_3_8_2', 'C:\\Program Files\\Applications\\python_3_8_2\\./lib', 'C:\\Program Files\\Applications\\python_3_8_2\\./lib/site-packages', 'C:\\Program Files\\Applications\\python_3_8_2\\./lib/site-packages/win32ctypes']

这样,您就不需要系统上存在
PYTHONPATH
变量,而且您仍然可以拥有该功能。缺点是这是特定于安装的,因此,如果您的系统上有3个不同的发行版,这将只影响所选的安装,而
PYTHONPATH
将同时影响所有安装。

使您的代码成为一个合适的包,使其易于安装,并在您的余生中快乐(而不是修补)。除此之外:每个文档都清楚地告诉您
sys.path.append()
接受包含文件的目录,而不是文件的单一路径。的可能副本不要将系统路径与
PYTHONPATH
混淆。好的,谢谢。很好,我添加了我的目录,其中包括文件及其工作,当我从另一个位置导入文件时,但当我从ipython出来并再次输入时出现的问题要检查我的路径,它不会出现,我不想每次输入代码时都这样做,我想将目录路径永久添加到sys.path,怎么办this@Kouripm:您的评论表明您实际上没有遵循我的建议,也没有遵循上面链接的重复帖子中的建议。
站点
包非常完美。修复了我的问题sue with
sys.path.append('C:\\python34\\lib\\site packages')
谢谢!为了子孙后代:
.pth
文件就是所谓的
路径配置文件
。关于路径配置文件,需要注意的是:
没有检查项目是否引用目录而不是文件。没有项目被多次添加到sys.path。跳过空行和以#开头的行。行开始执行导入操作(后跟空格或制表符)。
Add where?我知道答案,但似乎许多读者可能不知道。如果他们知道,他们可能不需要首先询问或寻找这个问题的答案,对吗?