Python代码从IDE运行,但不从终端运行

Bar*_*ich 5 python python-import pythonpath

当我尝试从Linux终端运行代码时,我的导入不起作用.具体来说,从同一项目中的其他包导入.我知道这是一个PYTHONPATH问题,但我不知道如何进一步诊断或解决它.代码在IDE(eclipse)中运行良好.

我对永久解决方案感兴趣,猜测它将涉及编辑.bashrc.我只是想从命令行调用脚本,比如

python my_script.py
Run Code Online (Sandbox Code Playgroud)

os.environ["PYTHONPATH"] 在ipython终端中给出了一个关键错误.

我试过了

print os.getcwd()
print sys.path
Run Code Online (Sandbox Code Playgroud)

在IDE里面

/home/myname/workspace/project2/main

['/home/myname/workspace/project2/main', '/home/myname/workspacep/problem2', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_6
4-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/p
ython2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pytho
n2.7/dist-packages/ubuntu-sso-client', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/lib-old']
Run Code Online (Sandbox Code Playgroud)

内部终端

/home/myname/workspace/project2/main

['/home/myname/workspace/project2/main', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
Run Code Online (Sandbox Code Playgroud)

Joh*_*n R 0

在Pycharm Eclipse 与 bash shell中执行脚本之间的区别在于环境变量 $PYTHONPATH 的值。

\n\n

Pycharm 中,转到首选项,然后项目解释器设置并将鼠标悬停在您在终端中找不到的包上。该包所在的路径应该出现。Eclipse,找出项目的环境变量的存储位置,或者找到相关模块的路径。

\n\n

将该路径添加到 shell 中的 $PYTHONPATH 中

\n\n
PYTHONPATH=$PYTHONPATH:your/path/here\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以将该行添加到 .bashrc 或 .bash_profile 文件中,也可以将其添加到 bash 脚本中,或者每次都键入它。

\n\n

更新回应OP评论:

\n\n

使用指向您未找到的 python 模块安装目录的路径。

\n\n

尝试

\n\n
python -v\n
Run Code Online (Sandbox Code Playgroud)\n\n

在您的 IDE 控制台中。这应该会给你一个模块及其目录的列表。

\n\n

在 shell 中使用相同的命令,差异将显示哪里缺少什么。

\n