永久性地在Python中向sys.path添加文件路径

时间:2012-09-04 06:15:18

标签: python sys.path

我有一个名为example_file.py的文件,我想从其他各种文件中使用它,所以我决定将example_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的路径。预先感谢您的帮助。

3 个答案:

答案 0 :(得分:65)

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

您还可以使用PYTHONPATH环境变量,该变量类似于系统PATH变量,但包含将添加到sys.path的目录。请参阅the documentation

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

答案 1 :(得分:1)

这种方式对我有用:

添加您喜欢的路径:

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add

检查:您可以运行'export'cmd并检查输出,也可以使用此cmd对其进行检查:

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

答案 2 :(得分:0)

在以下文件中的一个 Windows 发行版中: <python_root_installation_directory>/python38._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 会同时影响所有安装。