我有一个名为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
将同时影响所有发行版。