128

我有一个名为 的文件example_file.py,我想从其他各种文件中使用它,所以我决定在另一个文件中添加example_file.pysys.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 的路径?

4

4 回答 4

126

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

您还可以使用 PYTHONPATH 环境变量,它类似于系统 PATH 变量,但包含将添加到sys.path. 请参阅文档

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

于 2012-09-04T06:20:08.697 回答
7

这种方式对我有用:

添加您喜欢的路径:

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

检查:您可以运行 'export' cmd 并检查输出,或者您可以使用此 cmd 检查它:

python -c "import sys; print(sys.path)"
于 2020-05-01T11:32:30.087 回答
1

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

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

import setuptools

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

然后,您可以在出现提示时使用python pysetup.py installThen 自行安装此安装程序 enter pysetup

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

于 2021-11-19T08:56:25.357 回答
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影响所有的安装。

于 2021-05-02T23:37:31.373 回答