在 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 添加路径呢?

346944 次浏览

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

您还可以使用 PYTHONPATH 环境变量,它类似于系统 PATH 变量,但包含将添加到 sys.path的目录。见 文件

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

这种方法对我很有效:

添加你喜欢的路径:

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

Check: 您可以运行“ export”cmd 并检查输出,或者您可以使用这个 cmd 检查输出:

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

在以下文件中的一个窗口分发: <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将同时影响所有这些安装。

另一种方法是将文件安装为单个模块。

创建如下所示的安装程序文件(命名为 pysetup.py) :

import setuptools


module_name = input("Enter module name: ")
setuptools.setup(
name=module_name,
py_modules=[module_name],
)

然后您可以使用 python pysetup.py install安装这个安装程序,当提示输入 pysetup时。

现在要安装任何文件,您可以键入 python -m pysetup install,然后输入文件的名称。还可以用 develop替换 install,以便在开发模式下安装并继续编辑文件。