PYTHONPATH不包含在Ubuntu 16.04上的sys.path中

Flo*_*aun 6 python linux bash

经过几个小时的挣扎,我才结束了.

我想将我的项目中的Python模块包含到PYTHONPATH中,以便Python解释器可以解析它们并使它们可用import.

我的项目文件夹如下所示:

my_project/
  module1/
    __init__.py
    module1.py
  module2/
    __init__.py
    module2.py
Run Code Online (Sandbox Code Playgroud)

我已经/etc/bash.bashrc像这样导出了PYTHONPATH :

PYTHONPATH="${PYTHONPATH}:/home/john/my_project/"
Run Code Online (Sandbox Code Playgroud)

重新启动我的shell后,我可以回复它:

$ echo $PYTHONPATH
:/home/john/my_project/
Run Code Online (Sandbox Code Playgroud)

然后我启动一个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']
Run Code Online (Sandbox Code Playgroud)

正如你可以清楚地看到的那样,/home/john/my_project/没有包括在内并且import module1会失败.

我能想到的最后一件事是Python无法看到我的PYTHONPATH变量,因此没有添加它的内容sys.path.

你们发现我的错误吗?

提前致谢.

Ris*_*hav 8

这里你可以看到:

export在bash中使用为当前shell和从当前shell生成的所有进程设置变量.所以你应该使用:

export PYTHONPATH="${PYTHONPATH}:/home/john/my_project/"

  • 天啊,这么愚蠢的错误。写这个问题的时候我什至没有注意到这个错误。猜猜我在这件事上全力以赴。谢谢! (2认同)
  • @FlorianBraun 没问题,它发生了:) (2认同)