2017-12-03 224 views
0

的bash脚本如下所示:设置PYTHONPATH和运行Python脚本在bash

#!/bin/bash 
export PYTHONPATH="$PYTHONPATH:/path/to/expackage/" 
python example.py 

让我们把这个bash脚本 'exbash'。该Python脚本 'example.py' 看起来像下面这样:

try: 
    from expackage import exmodule 
    print 'it worked' 
except: 
    print 'it didn't work' 

发出命令

./exbash 

工作正常。但是,如果我有examply.py电话与进口exmodule例如另一个脚本

# Begin example.py 
try: 
    from example2 import ex2 
    print 'it worked' 
except: 
    print 'it didn't work' 

其中example2.py看起来像

# Begin example2.py 
from expackage import exmodule 
class ex2: 
    def __init__(self): 
    .......... 
if __name__== "__main__": 
    .......... 

模块未能在example2.py加载。即我得到错误

File "/path/to/example2.py", line .., in <module> 
from expackage.exmodule import something 
ImportError: No module named expackage.exmodule 
+0

使用'source exbash'给出相同的错误 –

+0

您不从目录中导入,从包和模块中导入。 https://docs.python.org/2/tutorial/modules.html –

+0

@ IgnacioVazquez-Abrams抱歉,我的意思是软件包,而不是目录。但问题仍然存在 –

回答

0

你确定你已经写好了模块吗? Python似乎能够导入'包'包,但似乎无法在其中找到'模块'。你能分享'包'的内容,以便更容易调试吗?

+0

'package'包含一个'__init __。py'文件和一个'module.py'和'module.pyc文件'。如果我删除'exbash'的最后一行并发出命令'source exbash',然后发出命令'python example.py',我就会得到输出'it worked'。使用环境变量的问题似乎有些微妙 –

+0

更改'example.py'的第二行以导入包也给出了类似的错误 –

+0

您可以将第一行的exbash转移到另一个文件(可以说exbash_source)并在exbash中添加“source exbash_source”。 –