繁体   English   中英

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

[英]Permanently adding a file path to sys.path in Python

我有一个名为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 ,我看到我添加的路径不存在,那么我如何在 sys.path 中永久添加路径Python?

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

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

解决此问题的另一种方法是将文件安装为单个模块。

创建如下安装程序文件(名为 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以在开发模式下安装并继续编辑文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM