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

有几种方法。最简单的方法之一是创建一个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

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

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

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

创建一个安装程序文件如下(名为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,然后输入文件名。您也可以将install替换为develop以在开发模式下安装并继续编辑文件。

在以下文件中的一个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将同时影响所有发行版。

最新更新