sys.path.append
时,新目录都会被添加。然而,一旦我关闭python,列表将恢复到以前(默认?)的值。如何永久地将一个目录添加到PYTHONPATH
中?sys.path.append
时,新目录都会被添加。然而,一旦我关闭python,列表将恢复到以前(默认?)的值。如何永久地将一个目录添加到PYTHONPATH
中?将 export PYTHONPATH="${PYTHONPATH}:/my/other/path"
添加到 ~/.bashrc 中可能无效,如果当前不存在 PYTHONPATH
(因为有冒号 :
)。
export PYTHONPATH="/my/other/path1"
export PYTHONPATH="${PYTHONPATH}:/my/other/path2"
这是对此线程的更新,其中包含一些旧答案。
对于那些使用MAC-OS Catalina或某些新版本(>=10.15)的人来说,引入了一个名为 zsh
的新终端(替代旧的 bash
)。
由于这种变化,我对上面的答案有些问题,我通过创建文件 ~/.zshrc
并将文件目录粘贴到 $PATH
和 $PYTHONPATH
中来解决了一些问题。
所以,首先我做了:
nano ~/.zshrc
export PATH="${PATH}:/Users/caio.hc.oliveira/Library/Python/3.7/bin"
export PYTHONPATH="${PYTHONPATH}:/Users/caio.hc.oliveira/Library/Python/3.7/bin"
保存它,并重新启动终端。
重要提示: 上面的路径是设置为我的计算机路径,您需要适应您的Python。
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))
python -m site --user-site
返回的目录中来避免需要管理员权限(以及整个路径搜索逻辑)。这也称为“python -c“import site; print(site.USER_SITE)”。不能假设此用户站点目录已经存在,但可以创建它。 - Amit Naidu~/.bash_profile
或 ~/.profile
中。.bash_profile
,否则请使用 .profile
。 - smac89vim ~/.bashrc
将以下内容粘贴到您的个人资料中:
export PYTHONPATH="${PYTHONPATH}:/User/johndoe/pythonModule"
然后,在终端运行代码时,请确保每次都引用您的bashrc配置文件:
source ~/.bashrc
我在Windows Vista和Python 3.5中永久添加了以下内容:
系统 > 控制面板 > 高级系统设置 > 高级(选项卡)环境变量 > 系统变量 > (如果在变量列中看不到PYTHONPATH)(点击)新建 > 变量名:PYTHONPATH > 变量值:
请在“变量值”中写入目录。这是Blue Peppers的答案的详细信息。
conda develop /your_path
当我从bash切换到zsh时,遇到了Python路径问题。
解决方案很简单,但我没有注意到。
Pip向我显示,脚本 blah blah
或软件包 blah blah
安装在不在路径中的 ~/.local/bin
。
阅读了一些关于此问题的解决方案后,我打开了我的.zshrc
,发现解决方案已经存在。
我只需要取消注释一行:
看一下
import sys
import os
print(str(sys.path))
dir_path = os.path.dirname(os.path.realpath(__file__))
print(f"current working dir: {dir_path}")
root_dir = dir_path.replace("/util", '', 1)
print(f"root dir: {root_dir}")
sys.path.insert(0, root_dir)
print(str(sys.path))
我强烈建议您使用virtualenv和virtualenvwrapper,否则会使您的路径混乱不堪。
user@terminal$ env PYTHONPATH=module_path python3
>>> import sys
>>> sys.path
['module_path', 'plus_other_python3_paths',...]
echo PYTHONPATH
命令,但是没有任何输出!这意味着 PYTHONPATH 没有被初始化,所以我将这行代码export PYTHONPATH=$PYTHONPATH:<PATH_TO_TF>/TensorFlow/models/research/object_detection
粘贴到我的~/.bashrc
文件中,并执行source ~/.bashrc
命令。稍后,当我执行echo $PYTHONPATH
命令时,它给出了:<PATH_TO_TF>/TensorFlow/models/research/object_detection
的输出。请问我是否做错了什么? - Anu${PYTHONPATH}:
部分省略掉。命令如下:export PYTHONPATH=<PATH_TO_TF>/TensorFlow/models/research/object_detection
。 - boyangeor:<PATH_TO_TF>/TensorFlow/models/research/object_detection
,并删除第二个路径export PYTHONPATH=$PYTHONPATH:/TensorFlow/models/research/slim
。对此有什么建议,如何解决? - Anu