每当我使用sys.path。追加,新目录将被添加。然而,一旦我关闭python,列表将恢复到以前的(默认?)值。如何将目录永久添加到PYTHONPATH?


当前回答

将export PYTHONPATH="${PYTHONPATH}:/my/other/path"添加到~/。如果PYTHONPATH当前不存在(因为:),bashrc可能无法工作。

export PYTHONPATH="/my/other/path1"
export PYTHONPATH="${PYTHONPATH}:/my/other/path2"

将以上内容添加到我的~/。bashrc在Ubuntu 16.04上为我完成了这个任务

其他回答

您需要将新目录添加到环境变量PYTHONPATH中,以冒号与之前的内容分隔。在任何形式的Unix中,您都可以在适合于您使用的任何shell的启动脚本中完成(。配置文件或其他,取决于你最喜欢的shell)与一个命令,同样,取决于所讨论的shell;在Windows中,您可以通过系统GUI来实现此目的。

Superuser.com可能是一个更好的地方,可以进一步询问,例如,如果您需要详细说明如何在所选的平台和shell中丰富环境变量,可以询问更多细节,因为这本身并不是一个真正的编程问题。

在Mac上:

user@terminal$ env PYTHONPATH=module_path python3
>>> import sys
>>> sys.path
['module_path', 'plus_other_python3_paths',...]

下面的脚本可以在所有平台上运行,因为它是纯Python。它使用了pathlib路径(请参阅https://docs.python.org/3/library/pathlib.html),使其能够跨平台工作。运行一次,重新启动内核,就完成了。灵感来自https://medium.com/@arnaud.bertrand/ modiing-python-s - sear-path-with-pth -files-2a41a4143574。为了运行它,它需要管理员权限,因为你修改了一些系统文件。

from pathlib import Path
to_add=Path(path_of_directory_to_add)
from sys import path

if str(to_add) not in path:
    minLen=999999
    for index,directory in enumerate(path):
        if 'site-packages' in directory and len(directory)<=minLen:
            minLen=len(directory)
            stpi=index
            
    pathSitePckgs=Path(path[stpi])
    with open(str(pathSitePckgs/'current_machine_paths.pth'),'w') as pth_file:
        pth_file.write(str(to_add))

您可以通过pythonrc文件添加路径,该文件默认为~/。linux上的Pythonrc。ie。

import sys
sys.path.append('/path/to/dir')

您还可以在全局rc文件中设置PYTHONPATH环境变量,例如~/。mac或linux上的配置文件,或通过控制面板->系统->高级选项卡-> windows上的环境变量。

在linux上,您可以创建从包到PYTHONPATH目录的符号链接,而不必处理环境变量。喜欢的东西:

ln -s /your/path /usr/lib/pymodules/python2.7/