我想将项目中的Python模块包含到PYTHONPATH中,以便Python解释器可以解析它们并使它们可用于导入.
我的项目文件夹如下所示:
my_project/
module1/
__init__.py
module1.py
module2/
__init__.py
module2.py
我在/etc/bash.bashrc中导出了PYTHONPATH,如下所示:
PYTHONPATH="${PYTHONPATH}:/home/john/my_project/"
重新启动我的shell后,我可以回复它:
$echo $PYTHONPATH
:/home/john/my_project/
然后我启动一个Python命令行,看看sys.path变成了什么:
$source /home/john/my_env/bin/activate
(my_env)$python3
>>> import os
>>> sys.path
['', '/home/john/my_env/lib/python35.zip', '/home/john/my_env/lib/python3.5', '/home/john/my_env/lib/python3.5/plat-x86_64-linux-gnu', '/home/john/my_env/lib/python3.5/lib-dynload', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/home/john/my_env/lib/python3.5/site-packages']
您可以清楚地看到,/ home / john / my_project /未包含在内,导入module1将失败.
我能想到的最后一件事是Python无法看到我的PYTHONPATH变量,因此不会将其内容添加到sys.path中.
你们发现我的错误吗?
提前致谢.
解决方法:
从here可以看出:
在bash中使用export为当前shell和从当前shell生成的所有进程设置变量.所以你应该使用:
export PYTHONPATH =“${PYTHONPATH}:/ home / john / my_project /”
标签:python,bash,linux
来源: https://codeday.me/bug/20190527/1165819.html