我有一个名为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的路径。预先感谢您的帮助。
答案 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
会同时影响所有安装。